java學習

          java學習

           

          javascript面向對象中繼承的幾種方式

          <html>
              <head>
              
              </head>
              <body>
                  <script type="text/javascript">
                  //繼承之對象冒充方式,可以繼承多個父類
                      function user(name){
                          this.name = name;
                          this.sayname = function(){
                              alert(this.name);
                          }
                      }
                      function student(name,score){
                          //user(name);
                          this.temp = user;
                          this.temp(name);
                          delete this.temp;
                          this.score = score;
                          this.sayscore = function(){
                              alert(this.score);
                          }
                      }
                      var s = new student('tom',33);
                      //s.sayname();
                      //s.sayscore();
                      
                      //用call()函數實現繼承
                      function user(name){
                          this.name = name;
                          this.sayname = function(){
                              alert(this.name);
                          }
                      }
                      function student(name,score){
                          user.call(this,name);
                          this.score = score;
                          this.sayscore = function(){
                              alert(this.score);
                          }
                      }
                      var s = new student('tom',33);
                      //s.sayname();
                      //s.sayscore();
                      
                      //用apply()函數實現繼承
                      function user(name){
                          this.name = name;
                          this.sayname = function(){
                              alert(this.name);
                          }
                      }
                      function student(name,score){
                          user.apply(this,[name]);
                          this.score = score;
                          this.sayscore = function(){
                              alert(this.score);
                          }
                      }
                      var s = new student('tom',33);
                      //s.sayname();
                      //s.sayscore();
                      
                      
                      //原型鏈方式實現繼承
                      //1.將父類中所用通過prototype設置的屬性或方法放到子類中
                      //2.并覆蓋子類中所以的prototype的設置
                      //3.所以子類自己的所以的prototype的設置要放在繼承父類的下面
                      //4.缺點是不支持多個繼承,構造函數不能有參數
                      
                      function user(){}            
                      user.prototype.name = '';
                      user.prototype.say = function(){
                          alert(this.name);
                      }
                      function student(){}
                          student.prototype =new user();
                          student.prototype.age = 0;
                          student.prototype.show = function(){
                              alert(this.age);
                          }
                      
                      var s = new student();
                      s.name = 'tom';
                      s.age = 44;
                      //s.say();
                      //s.show();
                      //alert(s instanceof user);
                      //alert(s instanceof student);
                      
                      
                      //混合模式實現繼承
                      function user(name){
                          this.name = name;
                      }
                      user.prototype.sayname = function(){
                          alert(this.name);
                      }
                      function student(name){
                          user.call(this.name);
                      }
                      //將user中所有通過prototype設置的方法放到student中
                      student.prototype = new user();
                      student.prototype.age = 0;
                      student.prototype.sayage = function(){
                          alert(this.age);
                      }
                      var s = new student();
                      s.name = 'tom';
                      s.age = 44;
                      s.sayname();
                      s.sayage();
                      alert(s instanceof user);
                      alert(s instanceof student);
                      
                  </script>
              </body>
          <html/>

          posted @ 2013-06-17 15:26 楊軍威 閱讀(370) | 評論 (0)編輯 收藏

          javascript模擬java中的StringBuffer連接字符串

          function stringbuffer(){
                          this.array = new Array();
                      }
                      stringbuffer.prototype.append = function(s){
                          this.array.push(s);
                      }
                      stringbuffer.prototype.tostring = function(){
                          return this.array.join('-');
                      }
                      var sb = new stringbuffer();
                      sb.append('tom');
                      sb.append('lily');
                      alert( sb.tostring());

          posted @ 2013-06-17 13:53 楊軍威 閱讀(181) | 評論 (0)編輯 收藏

          javascript面向對象創建對象的五種方法

          <html>
              <head>
              
              </head>
              <body>
                  <script type="text/javascript">
                  //工廠模式創建對象,缺點是不能知道對象的類型
                      function createUser(name,age){
                          var o = {};
                          o.name=name;
                          o.age=age;
                          o.say=function(){
                              alert(this.name);
                          }
                          return o;
                      }
                      //user1 = createUser("tom",11);
                      //alert(user1.name);
                      //user2 = createUser("tom1",111);
                      //user2.say();
                      
                      
                      //構造函數創建對象。缺點是對象中的方法需要寫在構造函數外面,有可能寫很多方法
                      
                      function user(name,age){
                          this.name=name;
                          this.age = age;
                          this.say = say;
                      }
                      function say(){
                          alert(this.name);
                      }
                      //var user1 = new user("tom",44);
                      //var user2 = new user("lily",66);
                      //alert(user1.name);
                      //user2.say();
                      //alert(user1 instanceof user);
                      
                      
                      //原型模式,缺點是不能有構造函數
                      
                      function user(){}
                      user.prototype.name='';
                      user.prototype.age = 0;
                      user.prototype.address = [];
                      user.prototype.say = function(){
                          alert(this.name);
                      }
                      var user1 = new user();
                      user1.name = 'tom';
                      user1.age = 11;
                      user1.address = [1,2];
                      //user1.address.push("1","2");
                      var user2 = new user();
                      user2.name = 'lily';
                      user2.age = 22;
                      user2.address = [3,4];
                      //user2.address.push("3","4");
                      //alert(user1.name);
                      //alert(user1.age);
                      //alert(user1.address);
                      //user1.say();
                      //alert(user2.name);
                      //alert(user2.age);
                      //alert(user2.address);
                      //user2.say();
                      
                      //構造函數+原型模式,構造方法構造屬性,原型模式構造方法
                      function user(name,age){
                          this.name = name;
                          this.age = age;
                          this.address = ['1','2'];
                      }
                      user.prototype.say = function(){
                          alert(this.name);
                      }
                      var user1 = new user('tom',11);
                      var user2 = new user('lily',22);
                      user1.address.push('a','b');
                      user2.address = ['cc','dd'];
                      alert(user1.address);
                      alert(user2.address);
                      
          //動態原型模式
                      function user(name,age){
                          this.name = name;
                          this.age = age;
                          this.address = ['1','2'];
                          if(typeof this.say != 'function'){
                              user.prototype.say = function(){
                          alert(this.name);
                      }
                          }
                      }
                      var user1 = new user('tom',11);
                      var user2 = new user('lily',22);
                      alert(user1.say==user2.say);

                  </script>
              </body>
          <html/>

          posted @ 2013-06-17 13:30 楊軍威 閱讀(222) | 評論 (0)編輯 收藏

          ajax下拉框聯動

          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
            <head>
              <title>My JSP 'car.jsp' starting page</title>
            </head>
           
            <body>
              <select id="car" onchange="sendAjax()">
                  <option>-- 請選擇汽車品牌 --</option>
                  <option value="bmw">寶馬</option>
                  <option value="audi">奧迪</option>
                  <option value="benz">奔馳</option>
              </select>
              <select id="type" onchange="sendType()">
                  <option>-- 請選擇系列 --</option>
              </select>
              <script type="text/javascript">
                      var xmlHttp;
                  
                  /*創建XMLHttpRequest對象*/
                  function createXMLHttpRequest() {
                      if(window.ActiveXObject) {
                            //IE
                            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                        } else {
                            //chrome firefox opera
                            xmlHttp = new XMLHttpRequest();
                        }
                  }
                  
                  function sendAjax(){
                      createXMLHttpRequest();
                      
                      var name = document.getElementById("car").value;
                      xmlHttp.onreadystatechange = callback;//回調函數
                      
                      
                      xmlHttp.open("GET","car.jspx?name="+name,true);
                      xmlHttp.send();
                      
                  }
                  
                  function callback() {
                      if(xmlHttp.readyState == 4) {
                          if(xmlHttp.status == 200) {
                              var xml = xmlHttp.responseXML;
                              
                              var types = xml.getElementsByTagName("recode");
                              document.getElementById("type").options.length = 1;
                              for(var i = 0;i < types.length;i++) {
                                  
                                  //alert(types[i].childNodes[0].nodeValue);
                                  var myOption = new Option(types[i].childNodes[0].nodeValue,types[i].childNodes[0].nodeValue);
                                  document.getElementById("type").options.add(myOption);
                                  
                              }
                              
                          } else {
                              alert("Ajax Error1!");
                          }
                      }
                  }
                  function sendType(){
                          createXMLHttpRequest();
                      
                      var name = document.getElementById("type").value;
                      xmlHttp.onreadystatechange = callback2;//回調函數
                      
                      
                      xmlHttp.open("GET","ajax.jspx?name="+name,true);
                      xmlHttp.send();
                  }
                      function callback2() {
                      if(xmlHttp.readyState == 4) {
                          if(xmlHttp.status == 200) {
                              var result = xmlHttp.responseText;
                              
                               alert(result);
                                  
                              }
                              
                          } else {
                              alert("Ajax Error2!");
                          }
                      }
                  
              </script>
            </body>
          </html>
          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.ArrayList;
          import java.util.HashMap;
          import java.util.List;
          import java.util.Map;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;


          public class CarServlet extends HttpServlet {

              
              /**
               *
               */
              private static final long serialVersionUID = 1L;

              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  //DB取出數據
                  Map<String, List<String>> data = new HashMap<String, List<String>>();
                  List<String> bmwList = new ArrayList<String>();
                  bmwList.add("521");
                  bmwList.add("621");
                  bmwList.add("721");
                  bmwList.add("821");
                  bmwList.add("X6");
                  
                  
                  List<String> audiList = new ArrayList<String>();
                  audiList.add("A1");
                  audiList.add("A2");
                  audiList.add("A3");
                  audiList.add("A4");
                  audiList.add("A5");
                  audiList.add("A6");
                  audiList.add("A8");
                  
                  List<String> benzList = new ArrayList<String>();
                  benzList.add("B1");
                  benzList.add("B2");
                  benzList.add("B3");
                  benzList.add("B4");
                  benzList.add("B5");
                  
                  data.put("bmw", bmwList);
                  data.put("audi", audiList);
                  data.put("benz", benzList);
                  //----------------------------------------------------------
                  
                  
                  
                  String name = request.getParameter("name");
                  
                  List<String> dataList = data.get(name);
                  
                  
                  response.setContentType("text/xml;charset=UTF-8");
                  PrintWriter out = response.getWriter();
                  
                  out.print("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
                  out.print("<data>");
                  for(String str : dataList) {
                      out.print("<recode>"+str+"</recode>");
                  }
                  out.print("</data>");
                  
                  out.flush();
                  out.close();
                  
              }


              public void doPost(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  doGet( request,  response);
              }

          }



          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class AjaxServlet extends HttpServlet {

              private static final long serialVersionUID = 1L;

              @Override
              protected void service(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  
                  
                  
                  System.out.println("method:" + request.getMethod());
                  String name = request.getParameter("name");
                  System.out.println("Hello! " + name);
                  
                  response.setContentType("text/html");
                  PrintWriter out = response.getWriter();
              /*    if("tom".equals(name)) {
                      out.print("error");
                  } else {
                      out.print("ok");
                  }*/
                  
                  out.print(name);
                  out.flush();
                  out.close();
              }
              
          }

          posted @ 2013-06-17 10:10 楊軍威 閱讀(307) | 評論 (0)編輯 收藏

          ajax筆記1

          <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
            <head>
              
              <title>My JSP 'index.jsp' starting page</title>
            </head>
           
            <body>
           
                <input type="text" id="name" onblur="sendAjax()"/>
                <img src="img/ajax.gif" style="display:none" id="loading"/>
                <span id="result"></span>
                <br/>
                <!--  
                <input type="button" value="Send Ajax" onclick="sendAjax()"/>
                -->
           
                <script type="text/javascript">
                
                var xmlHttp;
                    
                    /*創建XMLHttpRequest對象*/
                    function createXMLHttpRequest() {
                        if(window.ActiveXObject) {
                              //IE
                                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                                    } else {
                                        //chrome firefox opera
                                        xmlHttp = new XMLHttpRequest();
                                    }
                    }
                    
                    function sendAjax(){
                        createXMLHttpRequest();
                        
                        var name = document.getElementById("name").value;
                        
                        //post
                        xmlHttp.open("POST", "ajax.jspx", true);
                        xmlHttp.onreadystatechange = callback;             
                        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                        xmlHttp.send("name="+name);
                        
                        //get
                        //xmlHttp.open("GET","ajax.jspx?name="+name,true);
                        //xmlHttp.onreadystatechange = callback;
                        //xmlHttp.send();
                        
                    }
                    
                    function callback() {
                        if(xmlHttp.readyState == 4) {//服務器響應返回
                            
                            document.getElementById("loading").style.display = "none";
                            
                            if(xmlHttp.status == 200) {//響應正確
                                var result = xmlHttp.responseText;
                            
                                if(result == "ok") {
                                    document.getElementById("result").innerHTML = "√";
                                } else {
                                    document.getElementById("result").innerHTML = "用戶名已占用";
                                }
                            } else {
                                alert("Ajax Error!");
                            }
                        } else {
                            //進度條
                        
                            document.getElementById("loading").style.display = "inline";
                        }
                    }
                
                    
           
                    
                </script>
            </body>
          </html>

          posted @ 2013-06-17 09:46 楊軍威 閱讀(178) | 評論 (0)編輯 收藏

          javascrip對象方法和數組方法

          <html>
           <head>
            <script type="text/javascript">
          var user = {name:'tom',age:'22'};
          alert(user.name);
          alert(user["name"]);
          delete user.name;//刪除屬性
          alert("name" in user);//判斷屬性是否在對象中

            </script>
           </head>
           
          </html>

          posted @ 2013-06-13 17:44 楊軍威 閱讀(174) | 評論 (0)編輯 收藏

          javascript閉包

          <html>
           <head>
            <script type="text/javascript">
            function save(n1,n2){
               function fn(){
               return n1+n2;
              }
              return fn();
             }
             
             alert(save(2,3));
            //閉包第一種
             function test(){
              var num = 10;
              function inner(){
               alert(num);
              }
              inner();
             }
             //test();
             //閉包第二種
             function add(n1,n2){
              return function(){
               return n1+n2;
              }
             }
            //alert(add(2,3)());
            </script>
           </head>
           
          </html>

          posted @ 2013-06-13 10:59 楊軍威 閱讀(151) | 評論 (0)編輯 收藏

          jdbc的增刪改查的方法

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.SQLException;
          import java.sql.Statement;

          public class JdbcTest {

           public static void main(String[] args) throws ClassNotFoundException,SQLException {
            
            //1.加載數據庫驅動(提供一個jdbc的數據庫驅動的名稱)
            Class.forName("com.mysql.jdbc.Driver");
            
            //2.獲取數據庫連接
            String url = "jdbc:mysql:///gooddb";
            Connection conn = DriverManager.getConnection(url, "root", "root");
            
            //3.獲取Statment對象(該對象用于對數據庫進行CRUD操作)
            Statement stat = conn.createStatement();
            
            //4.執行SQL語句
            //String sql = "INSERT INTO t_class(classname) VALUES('java07')";
            String sql = "UPDATE t_class SET classname = 'sql01' WHERE id = 2";
            //executeUpdate()方法用于執行insert、update、delete語句,該方法返回影響數據庫的行數
            int rows = stat.executeUpdate(sql);
            if(rows > 0) {
             System.out.println("操作成功!");
            }
            
            //5.釋放連接
            stat.close();
            conn.close();
            
            
           }
          }

          import java.sql.Connection;
          import java.sql.DriverManager;
          import java.sql.ResultSet;
          import java.sql.SQLException;
          import java.sql.Statement;

          public class SelectTest {

           public static void main(String[] args) {
            
            Connection conn = null;
            Statement stat = null;
            ResultSet rs = null;
            try {
             Class.forName("com.mysql.jdbc.Driver");
             
             conn = DriverManager.getConnection("jdbc:mysql:///gooddb","root","root");
             
             stat = conn.createStatement();
             
             String sql = "select id,classname from t_class";
             //獲取結果集對象
             rs = stat.executeQuery(sql);
             
             while(rs.next()) {
              //int id = rs.getInt("id");
              int id = rs.getInt(1);
              //String name = rs.getString("classname");
              String name = rs.getString(2);
              
              System.out.println("id:" + id + "\tclassname:" + name);
             }
            } catch (ClassNotFoundException e) {
             e.printStackTrace();
            } catch (SQLException e) {
             e.printStackTrace();
            } finally {
             //釋放連接
             try {
              if(rs != null) {
               rs.close();
              }
             } catch (SQLException e) {
              e.printStackTrace();
             } finally {
              try {
               if(stat != null) {
                stat.close();
               }
               
              } catch (SQLException e) {
               e.printStackTrace();
              } finally {
               try {
                if(conn != null) {
                 conn.close();
                }
               } catch (SQLException e) {
                e.printStackTrace();
               }
              }
             }
            }
            
            
           }
          }

          posted @ 2013-06-13 08:51 楊軍威 閱讀(2095) | 評論 (1)編輯 收藏

          計算兩個時間段相隔多少天的java方法

          package com.tCalendar.d;

          /*
           * java.util.Calendar 類學習
           */


          import java.text.SimpleDateFormat;

          /**
           *
           * @author Icer
           */
          public class TCalendar {
             
              private static SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyyMMdd");
              private String dayInfo[][];
              private int dayCount;//間隔天數

             
              public static void main(String[] args) {
                  String startDate = "20120101";
                  String endDate = "20120102";
                  TCalendar tCalendar = new TCalendar();
                  tCalendar.initDayInfo(startDate, endDate);
                  System.out.println("天數: " + tCalendar.getDayCount());
              }
             
              public  void initDayInfo(String start,String end)
              {
               //初始化日期信息
               java.util.Calendar cal1=java.util.Calendar.getInstance();
               java.util.Calendar cal2=java.util.Calendar.getInstance();
               java.util.Calendar cal3=java.util.Calendar.getInstance();
               int year,month,day;
               int i=0;
               year=Integer.parseInt(start.substring(0,4));
               month=Integer.parseInt(start.substring(4,6));
               day=Integer.parseInt(start.substring(6,8));
               cal1.set(year, month-1, day);
               cal3.set(year, month-1, day);
               year=Integer.parseInt(end.substring(0,4));
               month=Integer.parseInt(end.substring(4,6));
               day=Integer.parseInt(end.substring(6,8));
               cal2.set(year, month-1, day);
               while(!cal2.before(cal3))
               { 
                i++;
                cal3.add(java.util.Calendar.DAY_OF_MONTH, 1);//日期時間+1
               }
               //每日數據列表
               dayInfo=new String[i+1][3];
               i=0;
               while(!cal2.before(cal1))
               { 
                          System.out.println("==" + cal1.getTime());
                dayInfo[i][0]=sDateFormat.format(cal1.getTime());
                i++;
                cal1.add(java.util.Calendar.DAY_OF_MONTH, 1);
               }
               
               this.dayCount=i;
               for (int j=0;j<i;j++)
               {
                this.dayInfo[j][1]="0";
                this.dayInfo[j][2]="0";
               }
               
              }
              public int getDayCount() {
                  return dayCount;
              }

              public void setDayCount(int dayCount) {
                  this.dayCount = dayCount;
              }

              public String[][] getDayInfo() {
                  return dayInfo;
              }

              public void setDayInfo(String[][] dayInfo) {
                  this.dayInfo = dayInfo;
              }
          }

           

          posted @ 2013-06-09 16:43 楊軍威 閱讀(1133) | 評論 (1)編輯 收藏

          java反射常用方法

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          import java.io.IOException;  
          /** 
          *獲取指定類的構造器相關信息 
          */  
          public class ConstructorTest   
          {  
           private int i;  
           private double j;  
           //默認的構造器  
           public ConstructorTest(){  
           }  
           //重載的構造器  
           public ConstructorTest(int i,double j)throws IOException{  
            this.i=i;  
            this.j=j;  
           }  
           public static void main(String[] args) throws Exception  
           {  
            //得到本類的類對象  
            Class<?> cls=Class.forName("com.fanshe.obj.ConstructorTest");  
            //取得所有在本類聲明的構造器  
            Constructor<?> []cs=cls.getDeclaredConstructors();  
            //遍歷  
            System.out.println("----------------");
            for(Constructor<?> c:cs){  
             //構造器名稱  
             System.out.println("構造器名="+c.getName());  
             //構造器聲明所在的類  
             System.out.println("其聲明的類="+c.getDeclaringClass());  
             //取得參數的類型集合  
             Class<?> []ps=c.getParameterTypes();  
             //遍歷參數類型  
             for(int i=0;i<ps.length;i++){  
              System.out.println("參數類型"+i+"="+ps[i]);  
             }  
             //取得異常的類型集合  
             Class<?> []es=c.getExceptionTypes();  
             //遍歷異常類型  
             for(int j=0;j<es.length;j++){  
              System.out.println("異常類型"+j+"="+es[j]);  
             }  
             //結束一層循環標志  
             System.out.println("-----------");  
            }  
           }  
          }   

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *通過反射創新類的新對象 
          */  
          class CreateNewObj   
          {  
           //顯式默認的構造器  
           public CreateNewObj(){  
           }  
           //重載構造器  
           public CreateNewObj(int a,int b){  
            System.out.println("a= "+a+" b="+b);  
           }  
           
           public static void main(String[] args) throws Exception  
           {  
            //得到本類的類對象  
            Class<?> c=Class.forName("com.fanshe.obj.CreateNewObj");  
            //聲明構造器的參數類型集合  
            Class<?> []paramTypes=new Class[2];  
            //都為int型  
            paramTypes[0]=Integer.TYPE;  
            paramTypes[1]=Integer.TYPE;  
                  //根據參數類型決定得到哪個構造器  
            Constructor<?> cs=c.getConstructor(paramTypes);  
            //聲明要傳入的參數集合  
            Object []argList=new Object[2];  
            //傳入37和43  
            argList[0]=new Integer(37);  
            argList[1]=new Integer(43);  
            //根據符合上述參數類型的構造器來創建新的對象  
            Object rtnObj=cs.newInstance(argList);  
           }  
          }  

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *獲取指定類的字段相關信息 
          */  
          class FieldTest   
          {  
           //字段1  
           private double d;  
           //字段2  
           public static final int i=37;  
           //字段3  
           String str="fieldstest";  
           public static void main(String[] args) throws Exception  
           {  
            //獲取本類的類對象  
            Class<?> c=Class.forName("com.fanshe.obj.FieldTest");  
            //獲取所有聲明的的字段,getFields()包括繼承來的字段  
            Field []fs=c.getDeclaredFields();  
            //遍歷  
            for(int i=0;i<fs.length;i++){  
             Field f=fs[i];  
             //字段名  
             System.out.println("字段名"+(i+1)+"="+f.getName());  
             //字段聲明所在的類  
             System.out.println("該字段所在的類為:"+f.getDeclaringClass());  
             //字段的類型  
             System.out.println("字段"+(i+1)+"的類型:"+f.getType());  
             //查看修飾符  
             int mod=f.getModifiers();  
             //為0就是默認的包類型  
             if(mod==0){  
                          System.out.println("該字段的修飾符為:默認包修飾符");  
             }else{  
              //否則就是相應的類型  
              System.out.println("該字段的修飾符為:"+Modifier.toString(mod));  
             }  
             System.out.println("---結束第"+(i+1)+"循環---");  
            }  
           }  
          }  

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *獲取指定類的方法相關信息 
          */  
          class InformationTest   
          {  
           public static void main(String[] args) throws Exception  
           {  
            //得到String類對象  
            Class<?> cls=Class.forName("java.lang.String");  
            //得到所有的方法,包括從父類繼承過來的方法  
            Method []methList=cls.getMethods();  
            //下面是得到的是String類本身聲明的方法  
            //Method []methList=cls.getDeclaredMethods();  
            //遍歷所有的方法  
            for(Method m:methList){  
             //方法名  
             System.out.println("方法名="+m.getName());  
             //方法聲明所在的類  
             System.out.println("聲明的類="+m.getDeclaringClass());  
             //獲取所有參數類型的集體  
             Class<?> []paramTypes=m.getParameterTypes();  
             //遍歷參數類型  
             for(int i=0;i<paramTypes.length;i++){  
              System.out.println("參數 "+i+" = "+paramTypes[i]);  
             }  
             //獲取所有異常的類型  
             Class<?> []excepTypes=m.getExceptionTypes();  
             //遍歷異常類型  
             for(int j=0;j<excepTypes.length;j++){  
              System.out.println("異常 "+j+" = "+excepTypes[j]);  
             }  
             //方法的返回類型  
             System.out.println("返回類型 ="+m.getReturnType());  
             //結束一層循環標志  
             System.out.println("---------");  
            }  
           }  
          }  

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *通過反射改變字段的值 
          */  
          class ModifyField   
          {  
           //聲明一個字段  
           public double d;  
           public static void main(String[] args) throws Exception  
           {  
            //得到類的類對象  
            Class<?> c=Class.forName("com.fanshe.obj.ModifyField");  
            //根據字段名得到字段對象  
            Field f=c.getField("d");  
            //創建類的實例  
            ModifyField mf=new ModifyField();  
            //打印修改前字段的值  
            System.out.println("修改 "+f.getName()+" 前的值為:"+mf.d);  
            //修改d的值為12.34  
            f.setDouble(mf,12.34);  
            //打印修改后的值  
            System.out.println("修改 "+f.getName()+" 后的值為:"+mf.d);  
           
           }  
          }  

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *通過反射執行類的方法 
          */  
          class PerformMethod   
          {  
           //聲明一個簡單的方法,用于測試  
           public int add(int a,int b){  
            return a+b;  
           }  
           public static void main(String[] args)throws Exception  
           {  
            //獲取本類的類對象  
            Class<?> c=Class.forName("com.fanshe.obj.PerformMethod");  
            /** 
            *聲明add方法參數類型的集合 
            *共有兩個參數,都為Integer.TYPE 
            */  
            Class<?> []paramTypes=new Class[2];  
            paramTypes[0]=Integer.TYPE;  
            paramTypes[1]=Integer.TYPE;  
            //根據方法名和參數類型集合得到方法  
            Method method=c.getMethod("add",paramTypes);  
            //聲明類的實例  
            PerformMethod pm=new PerformMethod();  
            //傳入參數的集合  
            Object []argList=new Object[2];  
            //傳入37和43  
            argList[0]=new Integer(37);  
            argList[1]=new Integer(43);  
            //執行后的返回值  
            Object returnObj=method.invoke(pm,argList);  
            //類型轉換下  
            Integer returnVal=(Integer)returnObj;  
            //打印結果  
            System.out.println("方法執行結果為:"+returnVal.intValue());  
           }  
          }  

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *通過反射來操作數組 
          */  
          class UserArray   
          {  
           public static void main(String[] args) throws Exception  
           {  
            //得到String類的類對象  
            Class<?> c=Class.forName("java.lang.String");  
            //通過Array類的反射創建一個含有10個元素的String類型的數組  
            Object arr=Array.newInstance(c,10);  
            //為數組第5個位置元素賦一個值  
            Array.set(arr,5,"第5個位置元素");  
            //取得第5個位置元素的值  
            String s=(String)Array.get(arr,5);  
            //打印這個元素的值  
            System.out.println("值為:"+s);  
           }  
          }  

           

          package com.fanshe.obj;

          import java.lang.reflect.*;  
          /** 
          *通過反射創建和使用更復雜的數組 
          */  
          class UserArrayComplex  
          {  
           public static void main(String[] args) throws Exception  
           {  
            //聲明數組的維數為5X10X15  
            int dims[]=new int []{5,10,15};  
            //創建該類型的數組,元素的類型為Integer  
            Object arr=Array.newInstance(Integer.TYPE,dims);  
            //得到第3個10X15的二維數組  
            Object arrObj=Array.get(arr,3);  
            //Class c=arrObj.getClass().getComponentType();  
            //System.out.println(c);  
            //得到第2維中的第2個15位長度的數組  
            arrObj=Array.get(arrObj,5);  
                  //然后設置該數組里第10個元素的值為37  
            Array.set(arrObj,10,37);  
            //再將數組還原  
            int [][][]arrCast=(int [][][])arr;  
            //打印剛剛那個值  
            System.out.println(arrCast[3][5][10]);  
              
           }  
          }  

           

          posted @ 2013-06-09 16:36 楊軍威 閱讀(607) | 評論 (0)編輯 收藏

          僅列出標題
          共43頁: First 上一頁 16 17 18 19 20 21 22 23 24 下一頁 Last 

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 万载县| 勃利县| 辽源市| 和静县| 太和县| 陈巴尔虎旗| 澄城县| 分宜县| 凤庆县| 德化县| 岚皋县| 安图县| 织金县| 枣强县| 来安县| 溆浦县| 江孜县| 海门市| 三明市| 江山市| 美姑县| 汕头市| 都江堰市| 稻城县| 新干县| 衡南县| 龙口市| 古田县| 泗阳县| 天津市| 金昌市| 德州市| 泰州市| 额敏县| 塔城市| 五大连池市| 泾川县| 定南县| 南乐县| 西贡区| 卢湾区|