關於反射學習

2022-08-24 10:45:09 字數 1279 閱讀 3676

發射使用流程:

1、通過

class.classforname(「配置檔案中的路徑」); 獲取 位元組碼檔案

class clazz = class.forname("reflect.person");

2、通過 

clazz.getconstructor(

引數型別

.class);

獲得 建構函式

constructor con =  clazz.getconstructor(null); //(構造函式引數型別

)使用 .newinstance(null);構造物件

p = (person) con.newinstance(null); //給物件的引數

3、通過 

clazz.getmethod(「方法名」,引數型別

.class);

獲得 成員方法

method method = clazz.getmethod("getname", null);//獲取 

getname();

方法method.incoke(「物件」,傳參);

method.invoke(p, null);

4、通過

clazz.getdeclaredmethod(「方法名」,引數型別

.class);

獲得 私有方法

method method = clazz.getdeclaredmethod("printto", string.class);

通過method.setaccessible(true);

設定訪問許可權

method.setaccessible(true);            //暴力訪問類私有方法

method.invoke(p,"xiehe");

5、通過

clazz.getfield(「欄位名」);獲取類的 字段屬性

field field = clazz.getfield("add");//獲得字段域

通過field.get(

對像);

獲得字段值

string value = (string) field.get(p);

6、通過

clazz.getdeclaredfield(「欄位名」);獲得私有 字段屬性

field field = clazz.getdeclaredfield("num");

field.setaccessible(true); //設定訪問許可權

int value = (int) field.get(p); //獲取值

C 反射學習

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.linq using system.text u...

Java反射學習

應用在一些通用性較高的 中 框架的底層基於反射 在框架開發中,都是基於配置檔案開發,在配置檔案中配置子類,可以通過反射得到類中的所有內容,可以讓類中的某個方法執行 類中的所有內容 屬性 沒有引數的構造方法 有引數的構造方法 普通方法,都可以通過反射機制動態獲得。那麼接下來就看看怎麼通過反射來獲得類中...

php 反射學習

早知道php 有反射的概念一直沒抽出空來。今天看書裡面有個這玩意 弄個例子搞搞。不過似乎專案中用處不大。印象中似乎就 thinkphp 3.1 裡面的 控制器呼叫使用了反射 class person public function set name value public function get...