什麼是反射
在運作狀态中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動态擷取的資訊以及動态調用對象的方法的功能稱為java語言的反射機制。
反射有什麼用
1,在運作時判斷任意一個對象所屬的類;
2,在運作時構造任意一個類的對象;
3,在運作時判斷任意一個類所具有的成員變量和方法;
4,在運作時調用任意一個對象的方法;
5,生成動态代理。
實作Java反射的類
1)Class:它表示正在運作的Java應用程式中的類和接口
2)Field:提供有關類或接口的屬性資訊,以及對它的動态通路權限
3)Constructor:提供關于類的單個構造方法的資訊以及對它的通路權限
4)Method:提供關于類或接口中某個方法資訊
注意:Class類是Java反射中最重要的一個功能類,所有擷取對象的資訊(包括:方法/屬性/構造方法/通路權限)都需要它來實作
編寫Java反射程式的步驟:
1)必須首先擷取一個類的Class對象
例如:
Class c1 = Test.class;
Class c2 = Class.forName(“com.reflection.Test”);
Class c3 = new Test().getClass();
2)然後分别調用Class對象中的方法來擷取一個類的屬性/方法/構造方法的結構 注意:如果要能夠正常的擷取類中方法/屬性/構造方法應該重點掌握如下的反射類
Field
Constructor
Method
在此給出一個總結性的例子:
反射調用參數維數組的方法: