反射的使用

2021-09-26 04:38:53 字數 1564 閱讀 8198

1.首先我們得知道什麼是反射?

反射其實就是通過class檔案物件去獲取該檔案中的成員變數,構造方法,成員方法。

2.獲取class檔案物件的方式有三種

第一種是通過object類中的getclass()方法來獲取

student s=new student();

class c1=s.getclass();

第二種是直接使用資料型別的靜態屬性class實現的

class c2=student.class;

system.out.println(c1==c2); //true

第三種是通過class類中的靜態方法 static forname(string classname)獲取class檔案物件

class c3=class.forname("許可權類名");

system.out.println(c3==c2); //true

其實這三種獲取class檔案物件的方式得到的class檔案都是相同的,所以會有上面的值相等的情況

3.通過反射獲取成員變數並使用

常用獲取成員變數的方法

field getdeclaredfields()返回的是乙個成員變數的陣列
field getdeclaredfield(string name)返回的是指定名稱的成員變數
field getfields()返回的是乙個成員變數陣列,但是返回的都是由public修飾的變數
field getfield(string name)返回的是指定名稱的成員變數,但是返回的是由public修飾的變數
4.通過反射獲取構造方法並使用

常用獲取構造方法

constructor<?> getdeclaredconstructors()返回的是所有的構造方法組成的陣列
constructorgetdeclaredconstructor(class<?>... parametertypes)返回指定引數的構造方法
獲取了構造方法就可以使用public t newinstance(object ... initargs)方法來建立例項,從而能夠呼叫方法

5.通過反射獲取成員方法並使用

常用獲取成員方法

method getdeclaredmethods()返回的是所有的成員方法的陣列
method getdeclaredmethod(string name,class<?>... parametertypes)返回指定引數的成員方法
獲取到方法後就可以通過public object invoke(object obj, object... args)方法來獲取傳入的資料,從而達到我們的需求

反射的使用

當我們一開始使用反射的時候,首先理解的是,他可以攔截乙個方法,並執行其方法。com.ml.maskpro.ui.mainactivity中包含如下方法 public string getname string name private string getage int age 然後我們攔截這兩個方...

反射的使用

1.將主程式介面上的icon賦給基類內的icon 同時其他子類也具有了此icon public partial class baseform form 2 獲取介面 assembly assembly assembly.loadfrom system.io.path.getdirectoryname...

c 反射的使用

獲取具有指定名稱的type,執行區分大小寫的搜尋。tips gettype包括object.gettype 和type.gettype6個過載靜態方法 type ty type.gettype exthomeexpansion.view.zyl 通過引導程式集也可以獲得對應類的型別 其中load方法...