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)

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 紫云| 湟源县| 库车县| 深圳市| 靖安县| 绥芬河市| 礼泉县| 鄂尔多斯市| 遂昌县| 大渡口区| 华池县| 天气| 宁晋县| 乌鲁木齐市| 凤凰县| 肥城市| 西丰县| 新昌县| 唐海县| 喀喇沁旗| 连山| 安多县| 浦城县| 苗栗县| 怀来县| 江津市| 冀州市| 南宁市| 万全县| 伊川县| 辛集市| 蒙阴县| 通榆县| 宣恩县| 土默特右旗| 丽江市| 聂荣县| 克拉玛依市| 烟台市| 常宁市| 沅江市|