Thinking in sky

          --老賀的BLOG

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            21 隨筆 :: 0 文章 :: 35 評論 :: 0 Trackbacks
                  系統中需要一個方法,方法參數為任意對象,要求找到該對象的所有屬性名和屬性值,當然必須要用到反射了。查了會API,發現JAVA反射功能果然強大,一下就找到了需要的函數。
          1//roleVO為RoleVO類的對象, 返回該類的所有屬性的數組
          2Field[] fields =  roleVO.getClass().getFields();
          3
          4for(i=0; i<fields.length; i++){
          5    //得到 屬性名            
          6    String fieldName = fields[i].getName();
          7
          8       //得到roleVO對象中該屬性的值
          9    int value = fields[i].getInt(roleVO);    
          Field類根據屬性類型的不同對應不同的方法,如getFloat(),getLong(),參數必須為該類的對象。如果不指定類型也可以:get(),屬性是什么類型它就返回什么類型,其它更詳細的就要查看API文檔了。
          posted on 2007-05-15 13:28 老賀 閱讀(504) 評論(1)  編輯  收藏 所屬分類: JAVA基礎

          評論

          # re: 畢業設計筆記(3)--反射[未登錄] 2007-08-23 10:50 小賀
          Class的getFields()方法返回此Class 對象所表示的類或接口的所有public屬性。如果該 Class 表示一個類,則此方法返回該類及其所有超類的public屬性。
          如果該 Class 表示一個接口,則此方法返回該接口及其所有超接口的public屬性。
          private和protected的屬性是不能得到。

          畢業設計的系統里面,我為了獲得VO中屬性的name和value,把原本的private改成了public,這樣做肯定是有隱患的。SpringSide里也有這個需求,但是他新包裝了一個方法,可以強行讀取或設置對象變量值,忽略private,protected修飾符的限制。為什么我開始就沒想到呢?  回復  更多評論
            


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


          網站導航:
           
          主站蜘蛛池模板: 渝中区| 城固县| 咸丰县| 屯昌县| 阿鲁科尔沁旗| 汉阴县| 保山市| 额敏县| 奇台县| 华坪县| 东源县| 十堰市| 吉安市| 鄂尔多斯市| 修武县| 偏关县| 资阳市| 原平市| 天门市| 隆德县| 屯昌县| 刚察县| 梧州市| 门源| 来安县| 镇坪县| 酒泉市| 武宁县| 剑阁县| 囊谦县| 沽源县| 博乐市| 拜城县| 元氏县| 南昌县| 饶河县| 山阴县| 大关县| 广德县| 陈巴尔虎旗| 若羌县|