JavaBean 的屬性自省

首先我們要知道什么是javabean,而屬性指的是什么 ?

javabean可以理解是一種規(guī)范,編碼要有一定的規(guī)范,不然別人很難維護你的代碼

屬性就是一個類中的getter setter方法,(狹義理解)。如果一個成員變量有g(shù)etter setter方法,我們
可以說這個成員變量就是屬性。

屬性是如何自省的?

自省,聽起來跟 反射的自省差不多,其實很相似。大家都是通過字節(jié)碼來映射出自身的元素!

反射映射出整個類,屬性自省就映射出屬性的全部,就是名字,getter 和setter 方法

自省用Introspector 類來描述,自省這個功能 ,能把 自己的屬性打包好拿,得到一個BeanInfo接口的實例

BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class)

因為要自省,所以要加入自己的字節(jié)碼,后面的是父類字節(jié)碼,如果不加,父類的屬性class也會獲取到!
最好不要,因為沒有,而且拿了有時會出現(xiàn)很多問題

得到的BeanInfo還不能直接用,因為里面有很多屬性打包在一起,我要用要屬性描述器PropertyDescriptor

這個描述器可以把一個屬性的信息出拿出來,

PropertyDescriptor [ ] pds = info.PropertyDescriptors( );

循環(huán)迭代,把每個屬性的描述器拿出來

得到后,就可以獲取屬性的東西

Method m = pd.getWriteMethod( ); 相當(dāng)于getter方法

Method m1 = pd.getReadMethod ( ); 相當(dāng)于setter方法

String name = pd.getName ( );

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,068評論 0 9
  • 產(chǎn)品、營銷和渠道誰更重要,其實這個問題也有個類似的話題: 我做什么能夠多掙錢? . 翻看近期的知乎提問,除了搞笑的...
    鬼燈森林閱讀 1,058評論 0 3
  • 只因為你叫周杰倫,一個我愛了整整十二年的男人。 那時的我還小,約摸十歲的小女孩,時常在想在沒知道你之前,我的生活是...
    幼稚鬼真幼稚閱讀 517評論 0 2
  • ?摘自:http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a...
    許你一枝花閱讀 431評論 0 0

友情鏈接更多精彩內(nèi)容