Thinking in sky

          --老賀的BLOG

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

          評(píng)論

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

          畢業(yè)設(shè)計(jì)的系統(tǒng)里面,我為了獲得VO中屬性的name和value,把原本的private改成了public,這樣做肯定是有隱患的。SpringSide里也有這個(gè)需求,但是他新包裝了一個(gè)方法,可以強(qiáng)行讀取或設(shè)置對(duì)象變量值,忽略private,protected修飾符的限制。為什么我開(kāi)始就沒(méi)想到呢?  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 北京市| 霍城县| 浦东新区| 红河县| 广西| 康平县| 淳安县| 山东| 三河市| 呼和浩特市| 彭阳县| 格尔木市| 盐城市| 清徐县| 广平县| 莫力| 南华县| 项城市| 阜南县| 印江| 慈利县| 杭锦后旗| 永德县| 平原县| 罗城| 东山县| 屏山县| 建德市| 牟定县| 宝丰县| 旬阳县| 康保县| 金湖县| 双峰县| 两当县| 嘉义县| 冀州市| 突泉县| 涞水县| 大厂| 奎屯市|