afrag  
          記錄學習和成長的歷程
          日歷
          <2005年10月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345
          統計
          • 隨筆 - 9
          • 文章 - 5
          • 評論 - 2
          • 引用 - 0

          導航

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          積分與排名

          • 積分 - 10292
          • 排名 - 2368

          最新評論

          閱讀排行榜

          評論排行榜

           

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

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

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

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

          OK。按照面向對象的思想,其他的類應該不能夠修改ClassA的fieldA字段吧?因此無論什么時候你調用ClassA的myPrint方法,都應該打印的是“This is Class A”。
          ??????但是,實際情況并不是如此,請看下面的例子:
          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();
          ????}
          }
          運行結果是什么呢?是
          Begin to test change.
          This is ClassA
          This field have been changed!
          也就是說,在TestChangeApp類中,可以修改ClassA的私有成員變量。

          posted on 2005-10-29 16:26 afrag 閱讀(723) 評論(0)  編輯  收藏 所屬分類: Java 技術
           
          Copyright © afrag Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 芦溪县| 长子县| 长乐市| 江华| 新郑市| 徐州市| 丹凤县| 定安县| 长寿区| 铁岭县| 白玉县| 兴和县| 邹城市| 阜康市| 泰来县| 定南县| 定远县| 响水县| 上高县| 霍邱县| 丰台区| 博湖县| 新田县| 诸暨市| 彰化市| 同仁县| 丹巴县| 东至县| 文山县| 灵璧县| 留坝县| 兖州市| 长武县| 方正县| 塘沽区| 抚松县| 建瓯市| 防城港市| 义乌市| 长乐市| 江永县|