java使用反射給物件屬性賦值的兩種方法

2021-08-15 12:22:20 字數 826 閱讀 8557

主程式:

/**

*/public

class

testreflectset

public

void

setreadonly( string readonly )

}

方法1:

testreflectset t = new testreflectset();

field f = t.getclass().getdeclaredfield("readonly");

f.setaccessible(true);

f.set(t, "test");

system.out

.println(t.getreadonly());

以上方法得到乙個類的field 屬性,然後設定可見性,然後設定了乙個值,最後列印 

方法2:

method setreadonly = t.getclass().getmethod("setreadonly", string.class);

string s ="test2"

; setreadonly.invoke(t,s);

system.out

.println(t.getreadonly());

最後的列印結果: 

呼叫方法一 

test

呼叫方法二 

settest2

也就是說,第一種方法,沒有呼叫屬性的set方法就完成了賦值,但是第二種方法,是通過呼叫屬性的set方法來完成賦值。 

深入學習C 利用反射給物件賦值

c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...

深入學習C 利用反射給物件賦值

c 中利用反射能夠獲取物件的屬性資訊,也可以利用反射給物件賦值。我們如果想利用凡是給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。假設我們有如下乙個結構 struct person public string name 下面一段 ...

反射給物件賦值遇到的問題 型別轉換

給乙個物件屬性賦值可以通過propertyinfo.setvalue 方式進行賦值,但要注意值的型別要與屬性保持一致。建立物件例項的兩種方法 1.1 var obj assembly.load assemblyname createinstance assemblyname classfullnam...