posts - 262,  comments - 221,  trackbacks - 0
          【1】Filed類簡介
          Java反射技術的基本應用之一就是在運行時動態地訪問、修改變量的值。要動態地訪問、修改變量,首先要取得變量本身。步驟如下:
            1.獲取Class對象
            2.調用Class對象的getField(String)方法獲取指定的變量
           
          在獲得Filed對象之后,就可以在運行時動態地操縱變量了。Filed類里面最主要的方法有兩種:
            1.獲取變量方法:可以使用get(object)或getInt(Object)之類的方法
            2.設置變量方法:可以使用set(object, object)或setInt(Object,int)之類的方法
           
          這里我們要特別注意的set方法,它的方法簽名是:void set(Object obj, Object value)。注意它的第二個參數是Object類型的,也就是說假如方法的參數類型是原子類型的,在調用之前必須先轉換成對應的封裝類。比如:int->Integer。在JDK內部會自動將其解壓成原子類型。
           
          從JDK1.5版本開始,增加了"自動裝箱"和"自動開箱"的功能,所以我們看到下面的例子中為變量xf和yf賦值的語句,使用的不是封裝類型,而是元素類型數據。(見行43、48),在JDK1.4版本中這樣是不被允許的。建議不要這樣做以避免出現類型安全的問題。

          【2】示例代碼
          public static void main(String args[]) throws NoSuchFieldException,
                      IllegalAccessException {

                  
          // 創建對象
                  RefFiled obj = new RefFiled();

                  
          // 獲取類的成員變量
                  Class<?> c = RefFiled.class;
                  Field xf 
          = c.getField("x");
                  Field yf 
          = c.getField("y");

                  
          // 變更成員x值,注意第二個參數會被自動包裝成封裝類型
                  System.out.println("變更前x=" + xf.get(obj));
                  xf.set(obj, 1.1);

                  System.out.println(
          "變更后x=" + xf.get(obj));

                  
          // 變更成員y值,注意第二個參數會被自動包裝成封裝類型
                  System.out.println("變更前y=" + yf.get(obj));
                  yf.set(obj, 2.1);

                  System.out.println(
          "變更后y=" + yf.get(obj));
              }


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2008-09-04 15:02 Paul Lin 閱讀(408) 評論(0)  編輯  收藏 所屬分類: J2SE
          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 秦皇岛市| 许昌县| 中牟县| 图木舒克市| 微山县| 安达市| 镇江市| 墨竹工卡县| 临朐县| 股票| 五河县| 平邑县| 沙洋县| 射洪县| 马关县| 赞皇县| 额济纳旗| 砀山县| 宁陵县| 义乌市| 安平县| 雅安市| 乐昌市| 平潭县| 镇坪县| 齐河县| 普兰店市| 苗栗县| 淄博市| 清流县| 福泉市| 葫芦岛市| 田林县| 紫云| 临沭县| 中卫市| 建湖县| 浮梁县| 大新县| 长寿区| 雷州市|