test1.class
public class test
//(3)getmethod(方法名,引數型別1,引數型別2...),不常用
method=cls.getmethod("test2", int.class);
system.out.println("method:"+method);
//(4)getmethods(),獲取該類和父類中所有的public修飾的方法,不常用
methods=cls.getmethods();
system.out.println("methods:"+methods);
index=0;
for(method m:methods)
//反射api可以打破封裝特性(不受訪問控制修飾符約束),實現訪問不可見的方法和屬性
//修改方法的訪問許可權為可訪問
method.setaccessible(true);
//動態呼叫方法,準備引數
method.invoke(obj, 1);
/*** 4.動態訪問和修改物件的屬性
*///載入物件的屬性的四種方法:
//(1)getdeclaredfield(屬性名),根據屬性名獲取該類中的屬性
field field=cls.getdeclaredfield("param");
system.out.println("field:"+field);
//(2)getdeclaredfields(),獲取該類中所有的屬性,不受訪問控制修飾符限制
field fields=cls.getdeclaredfields();
system.out.println("fields:"+fields);
index=0;
for(field f:fields)
//(3)getfield(屬性名),根據屬性名獲取該類及其父類中的某個public修飾的屬性
field=cls.getfield("param");
system.out.println("field:"+field);
//(4)getfields(),獲取該類及其父類中所有public修飾的屬性
fields=cls.getfields();
system.out.println("fields:"+fields);
index=0;
for(field f:fields)
//反射api可以打破封裝特性(不受訪問控制修飾符約束),實現訪問不可見的方法和屬性
//修改屬性的訪問許可權為可訪問
field.setaccessible(true);
//獲取屬性值
object param=field.get(obj);
system.out.println("param_1:"+param);
//修改屬性值
field.set(obj, 3);
//顯示修改後的屬性
system.out.println("param_2:"+field.get(obj));
} catch (classnotfoundexception e) catch (nosuchmethodexception e) catch (securityexception e) catch (instantiationexception e) catch (illegalacces***ception e) catch (illegalargumentexception e) catch (invocationtargetexception e) catch (nosuchfieldexception e) }
public static void main(string args)
}
test2.class
public class test2
private void test2() {}
public static void test2(int num)
}
java反射機制,例項
templist 根據傳入的pmid不同建立的list對應的model不同,但是又要獲得這個templist 的屬性像pointname,changethis等等,object不能用get 屬性名來獲取,只能用反射獲得字段陣列,進而獲取欄位名,字段值。public string getexportp...
java反射機制
private string getmethod catch instantiationexception e1 catch illegalacces ception e1 try catch illegalargumentexception e catch illegalacces ception...
Java反射機制
1.反射是指程式在執行時,可以通過反射機制拿到任何乙個類的內部所有資訊。2.可以獲得類的所有屬性資訊,包括私有屬性,並對其進行操作 3.可以獲得物件所對應的類 4.可以拿到本類,或父類中的方法,並且對其進行操作。常用方法 getname 獲得類對應的名稱 getdeclaredfields 獲得類中...