posts - 6,  comments - 7,  trackbacks - 0

          1.2 反射

          1.2.1 學習筆記

          參考資料:Java 2 核心技術I:基礎知識(第7版) 5.5 反射

          (1) Class

              在程序運行期間,Java運行時系統始終為所有對象的維護一個被稱為運行時的類型標識。這個信息保存著每一個對象所有屬性的類足跡。虛擬機利用運行信息選擇相應的方法執行。

          獲取Class類對象的三種方法

          (a)     getClass()

                   Employee e;

                   …

                   Class cl=e.getClass();

                   System.out.println(cl.getName()+“  ” +e.getName());

           Result:

                   Employee Harry

          (b)    forName()

          String className= “java.util.Date ”;

          Class cl=Class.forName(className);

          (c)    .class

            Class cl1=Date.class;

           Class cl2=int.class;

          (2) 反射的分析能力

           示例:

          Employee.java:

          publicclass Employee {

              private String name;

              privateintage;

              public String getName() {

                  returnname;

              }

              publicvoid setName(String name) {

                  this.name = name;

              }

              publicint getSalary() {

                  returnage;

              }

              publicvoid setSalary(int salary) {

                  this.age = salary;

              }

              public Employee(String name, int salary) {

                  this.name = name;

                  this.age = salary;

              }

          }

          Test.java

          import java.lang.reflect.Field;

          publicclass test {

                   publicstaticvoid main(String[] args) throws SecurityException,

                                      NoSuchFieldException, IllegalArgumentException,

                                      IllegalAccessException {

                             Employee zhanjh = new Employee("zhan jh", 1000);

                             Class<?> cl = zhanjh.getClass();

                             Field f = cl.getDeclaredField("name"); // 返回名稱為“name”的私有或公有成員(域)

                             f.setAccessible(true); // 非常重要,否則無法調用f.get(zhanjh)方法

                             Object v = f.get(zhanjh);// 返回zhanjh對象中 name成員(域)的值

                             System.out.println(v.toString());

                   }

          }

          /*

           * 運行結果: zhan jh

           */

          posted on 2008-02-26 17:09 zhan 閱讀(165) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年2月>
          272829303112
          3456789
          10111213141516
          17181920212223
          2425262728291
          2345678

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 鄂托克前旗| 松滋市| 正镶白旗| 九龙坡区| 雷州市| 鞍山市| 德兴市| 定兴县| 霞浦县| 吉首市| 德格县| 聂拉木县| 八宿县| 达拉特旗| 岱山县| 二连浩特市| 开阳县| 麻栗坡县| 龙门县| 绥宁县| 大庆市| 宽甸| 资阳市| 平和县| 静海县| 泸溪县| 拜城县| 黎平县| 满城县| 三门县| 梅州市| 贡嘎县| 信丰县| 崇阳县| 金沙县| 南木林县| 伊宁市| 赣榆县| 绥宁县| 玉山县| 江都市|