java反射機制

1、反射機制概念
反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱爲java語言的反射機制。
2、反射機制的作用    
可用於運行時加載、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),並生成其對象實體、或對其fields設值、或喚起其methods1。
反射機制主要提供了以下功能: 
(1)在運行時判斷任意一個對象所屬的類;
(2)在運行時構造任意一個類的對象;
(3)在運行時判斷任意一個類所具有的成員變量和方法;
(4)在運行時調用任意一個對象的方法;
(5)生成動態代理。

3、獲取對象反射類的方法
(1)通過getClass方法
在Java中,每一個Object都有一個getClass()方法,通過getClass方法我們可以獲取到這個對象對應的反射類:
String s = "hello";
Class<?> c = s.getClass();
(2)通過forName方法
調用Class類的靜態方法forName():
Class<?> c = Class.forName("java.lang.String");
(3)使用.class
直接使用.class:
Class<?> c = String.class;
4、獲得構造函數的方法 
(1)Constructor getConstructor(Class[] params)//根據指定參數獲得public構造器
(2)Constructor[] getConstructors()//獲得public的所有構造器
(3)Constructor getDeclaredConstructor(Class[] params)//根據指定參數獲得public和非public的構造器
(4)Constructor[] getDeclaredConstructors()//獲得public的所有構造器 
5、獲得類方法的方法 
(1)Method getMethod(String name, Class[] params),根據方法名,參數類型獲得方法
(2)Method[] getMethods()//獲得所有的public方法
(3)Method getDeclaredMethod(String name, Class[] params)//根據方法名和參數類型,獲得public和非public的方法
(4)Method[] getDeclaredMethods()//獲得所以的public和非public方法 
6、獲得類中屬性的方法 
(1)Field getField(String name)//根據變量名得到相應的public變量
(2)Field[] getFields()//獲得類中所以public的方法
(3)Field getDeclaredField(String name)//根據方法名獲得public和非public變量
(4)Field[] getDeclaredFields()//獲得類中所有的public和非public方法 
java反射常用的方法基本就是這些,知道了這些再做其他的就非常簡單方便了,其中Spring的IoC容器就是使用java反射機制實現的。

發佈了68 篇原創文章 · 獲贊 75 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章