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 閱讀(162) 評論(0)  編輯  收藏

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


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

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 岳普湖县| 中方县| 宁城县| 新丰县| 巴林右旗| 道真| 景德镇市| 博爱县| 海兴县| 永清县| 兰西县| 静安区| 渝北区| 永康市| 邢台市| 墨玉县| 镇原县| 黄陵县| 平度市| 南宫市| 沐川县| 隆林| 永福县| 绥中县| 漯河市| 板桥市| 辽阳市| 东莞市| 迭部县| 玉田县| 连云港市| 德江县| 都安| 大港区| 隆尧县| 寻甸| 泰顺县| 东台市| 五大连池市| 富顺县| 昂仁县|