15、反射

反射
一、理解反射機制
Reflection 是 Java 程序開發語言的特徵之一,它允許運行中的 Java 程序對自身進行檢查,或者說“自審”,並能直接操作程序的內部屬性、方法、構造函數、訪問修飾符等信息。例如,使用它能獲得 Java 類中各成員的名稱並顯示出來。在運行時動態加載類等。第三方主流的框架如spring, springMVC, struts, hibernate等內部都大量的使用反射技術。

二、詳解及特點
1、JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的信息以及動態調用對象的方法的功能稱爲java語言的反射機制。
2、Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
3、通過“字符串類名”動態創建類的實例,這種就是通過反射創建實例,而不用通過主動new 的方式創建。

三、獲得類的實例
1、獲得類的Field實例
a. getFields(); 返回一個包含某些 Field 對象的數組,這些對象反映此 Class 對象所表示的類或接口的所有可訪問公共字段。
b. getFields(String name); 返回一個 Field 對象,它反映此 Class 對象所表示的類或接口的指定公共成員字段。
c. getDeclaredFields(); 返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的所有字段。
d. getDeclaredFields(String name); 返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段。

2、獲得類的Constructor實例
a. getConstructors(): 返回表示此類公共構造方法的 Constructor 對象數組。
b. getConstructor(Class<?>... parameterTypes): 返回與指定的 parameterTypes 相匹配的公共構造方法的 Constructor 對象。
c. getDeclaredConstructors(): 返回表示此類所有已聲明的構造方法的 Constructor 對象的數組。
d. getDeclaredConstructor(Class<?>... parameterTypes):返回帶有指定參數列表的已聲明的構造方法的 Constructor 對象。

3、獲得類的Method實例
a. getMethods():返回表示此類中公共方法的 Method 對象的數組。
b. getMethod(String name, Class<?>... parameterTypes):返回與指定的 name 和 parameterTypes 匹配的 Method 對象。
c. getDeclaredMethods():返回表示此類所有聲明方法的 Method 對象的數組。
getDeclaredMethod(String name, Class<?>… parameterTypes):返回該類與指定名和參數相匹配的方法的 Method 對象。

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