afrag  
          記錄學(xué)習(xí)和成長(zhǎng)的歷程
          日歷
          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345
          統(tǒng)計(jì)
          • 隨筆 - 9
          • 文章 - 5
          • 評(píng)論 - 2
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          積分與排名

          • 積分 - 10198
          • 排名 - 2381

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

           

          今天在看Spring in Action,看到了一個(gè)很有意思的例子。
          假如你編寫了一個(gè)類:

          public class ClassA{
          ??????private String fieldA;

          ??????public ClassA(){
          ?????????fieldA = "This is Class A";
          ???? }

          ??????public myPrint(){
          ????????????System.out.println(fieldA);
          ??????}
          }

          OK。按照面向?qū)ο蟮乃枷耄渌念悜?yīng)該不能夠修改ClassA的fieldA字段吧?因此無論什么時(shí)候你調(diào)用ClassA的myPrint方法,都應(yīng)該打印的是“This is Class A”。
          ??????但是,實(shí)際情況并不是如此,請(qǐng)看下面的例子:
          import java.lang.reflect.Field;
          public class? TestChangeApp
          {
          ????public static void main(String[] args)
          ????{
          ????????System.out.println("Begin to test change.");
          ????????ClassA test = new ClassA();
          ????????test.myPrint();

          ????????Field[] fields = test.getClass().getDeclaredFields();
          ??
          ????????try
          ????????{
          ????????????for (int i=0;i????????????{
          ??????????????? if (fields[i].getType().equals(java.lang.String.class)){
          ???????????????????fields[i].setAccessible(true);
          ???????????????????fields[i].set(test, "This field have been changed!");
          ???????????????}
          ????????????}
          ???
          ????????}
          ????????catch (Exception e)
          ????????{
          ????????}

          ????????test.myPrint();
          ????}
          }
          運(yùn)行結(jié)果是什么呢?是
          Begin to test change.
          This is ClassA
          This field have been changed!
          也就是說,在TestChangeApp類中,可以修改ClassA的私有成員變量。

          posted on 2005-10-29 16:26 afrag 閱讀(716) 評(píng)論(0)  編輯  收藏 所屬分類: Java 技術(shù)
           
          Copyright © afrag Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 文化| 大埔区| 科尔| 黄大仙区| 同仁县| 昌吉市| 嘉善县| 信阳市| 松桃| 天长市| 郯城县| 龙州县| 商洛市| 德昌县| 丰都县| 遵义县| 长沙县| 班玛县| 冕宁县| 奉节县| 黄梅县| 萍乡市| 呼玛县| 临夏县| 连平县| 泰兴市| 同德县| 绍兴市| 六盘水市| 闽侯县| 永平县| 化德县| 长宁县| 台东县| 太和县| 增城市| 阳朔县| 仁化县| 亚东县| 小金县| 泸溪县|