Java基礎 反射

2021-09-02 22:29:15 字數 1756 閱讀 3574

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...