本篇介紹利用反射給物件賦值
方法1 獲得並使用預設構造器建立類的物件 並對物件賦值
這裡類用的是person類 屬性有 id ,name ,address 來做例子
**如下:public class person
public void setid(integer id)
public string getname()
public void setname(string name)
public string getaddress()
public void setaddress(string address)
@override
public string tostring()
public person()
public person(integer id, string name, string address)
}
public static void main(string args) throws exception );
//根據類的預設構造器來獲得乙個物件
object instance = constructor.newinstance(new object {});
system.out.println(instance);
method methods=class1.getdeclaredmethods();
for(method m:methods) );
}if(type==string.class&&fieldname.equals("address")) );
}if(type==string.class&&fieldname.equals("name"))
m.invoke(instance, new object );}}
system.out.println(instance);
}
方法2 獲得並使用person的帶參構造器 建立物件 並賦值constructor<?> constructor1 = class1.getdeclaredconstructor(new class );
object instance1 = constructor1.newinstance(new object );
system.out.println(instance1);
C 反射賦值
tb projects model new tb projects model.ownerid 123 string fieldname ownerid 欄位名稱 string value 333 type t model.gettype var p t.getproperty fieldname ...
反射 4 Type反射
1 activator.createinstance type t 會動態呼叫類的public無參建構函式建立乙個物件,返回值就是建立的物件,如果類沒有無參建構函式就會報錯。2 應用 動態建立物件sayhello。介面宣告到單獨的專案中,避免迴圈引用。如下 using system using sy...
java反射 通用的java反射工具
因專案需要,需要反射呼叫安卓系統audiomanager的一些方法,這些方法或者使用 hide標記,或者需要的sdk版本比較高,無法直接呼叫,這個時候,反射就是一大神器了。正常的反射呼叫流程如下 非靜態有返回值方法反射 class clazz class.forname full classname...