Java內省技術

內省
內省是Java語言的一種重要特性。使用內省我們可以在運行時得到一個類的內部信息。這些信息包括方法、屬性、構造函數及其他。內省的一個應用是開發使用插件的應用程序。應用程序可以在運行時獲取並使用插件類的構造函數、方法和屬性。內省也可以應用於創建Java Beans和Javadocs中。
Introspector類
Introspector類爲訪問目標Jave Bean支持的屬性、事件和方法提供了標準方法。該方法可用於工具類(如BeanUtils)中。
對於屬性、事件和方法中的每一類信息,Introspector會分別分析目標bean以及其父類,尋找顯式或隱式信息並用其構建一個能夠全面描述目標bean的BeanInfo對象。

內省訪問JavaBean有兩種方法

       一、通過Introspector類獲得Bean對象的 BeanInfo,然後通過 BeanInfo 來獲取屬性的描述器( PropertyDescriptor ),通過這個屬性描述器就可以獲取某個屬性對應的 getter/setter 方法,然後通過反射機制來調用這些方法。

       二、通過PropertyDescriptor來操作Bean對象。


構造方法: 
    public PropertyDescriptor(String propertyName,Class<?> beanClass)
            propertyName:屬性名稱     beanClass:需要被設置屬性的類的Class對象
方法:
    public Method getWriteMethod() 獲取屬性的set方法。
    public Method getReadMethod() 獲取屬性的get方法




通過調用Introspector.getBeanInfo()方法來獲得指定類的bean信息。Java Bean規範允許通過實現BeanInfo接口,定義一個對象來描述bean。爲了將BeanInfo與bean關聯起來,須遵守如下命名模式:bean信息類的名字必須是將"BeanInfo"添加到bean名字的後面構成

新建user類




使用PropertyDescriptor




使用Introspector



上面兩種操作打印user的的結果都是一樣的


注:我們也可以使用beanutils工具包操作JavaBean(需導入beanutils工具包和logging日誌包)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章