public class getconstructor1
// 獲取乙個類的所有構造方法,包括似有的
constructor constructors2 = clazz1.getdeclaredconstructors();
for (constructor constructor : constructors2)
// 獲取單個構造方法
constructor constructor3 = clazz1.getconstructor(string.class, int.class);
// 通過constructor物件建立物件。
person p1 = (person) constructor3.newinstance("奧特曼", 12);
system.out.println(p1);
// 獲取私有的建構函式
constructor constructor4 = clazz1.getdeclaredconstructor(null);
// 設定構造方法的訪問許可權(暴力反射)
constructor4.setaccessible(true);
person p2 = (person) constructor4.newinstance(null);
system.out.println(p2);
}}
public class getmethod1
// 獲取所有的方法,包括私有的,但是不包括繼承下來的方法。
method methods2 = clazz.getdeclaredmethods();
system.out.println(" ");
for (method m : methods2)
system.out.println(" ");
// 獲取單個方法
// 第乙個引數是方法名, 第二引數是形參列表的資料型別。
method m1 = clazz.getmethod("eat", int.class, string.class);
// 執行乙個方法
person p = new person("狗娃", 12);
// 第乙個引數:方法的呼叫者物件, 第二引數: 方法執行所需要的引數。
m1.invoke(p, 3, new string );
method m2 = clazz.getmethod("sleep", int.class);
m2.invoke(null, 23);
// 獲取私有的方法
method m3 = clazz.getdeclaredmethod("study", null);
// 設定方法的訪問許可權是可以訪問
m3.setaccessible(true);
m3.invoke(p, null);
}}
public class getfield1
person p = new person("魯班七号", 12);
field namefield = clazz.getdeclaredfield("name");
// 第乙個引數: 物件, 第二引數:成員變數的值。
namefield.set(p, "奧特曼");
system.out.println(p);
}}
java反射基礎
反射就是在執行時才知道要操作的類是什麼,並且可以在執行時獲取類的完整構造,並呼叫對應的方法。1 通過 class 類獲取成員變數 成員方法 介面 超類 構造方法 getname 獲得類的完整名字。getfields 獲得類的public型別的屬性。getdeclaredfields 獲得類的所有屬性...
java反射基礎
反射 反射 將類的各個組成部分封裝為其他物件,這就是反射機制 好處 1.可以在程式執行過程中,操作這些物件。2.可以解耦,提高程式的可擴充套件性。獲取class物件的方式 1.class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件 多用於配置檔案,將類名定義在配置檔案中。...
Java基礎之反射
1.反射 將類的各個組成部分封裝為其他物件,這就是反射機制 好處 1.可以在程式執行過程中,操作這些物件 2.可以解耦,提高程式的可擴充套件性 2.獲取class物件的幾種方式 1.class.forname 全類名 將位元組碼檔案載入進來,返回class物件 2.類名.class 通過類名的屬性c...