java的反射基礎筆記

2021-07-23 15:48:22 字數 1540 閱讀 9692

反射reflect

1.1 class(描述類的類)

獲得類物件的三種方式

1.1.1 通過字串的類名獲取

class c = class.forname(「com.direct.person」);

1.1.2 通過類.class來獲取

class c = person.class;

1.1.3 通過物件.getclass()來獲取

person p = new person();

class c = p.getclass();

1.2 constructor(描述構造方法的類)

1.2.1 獲得構造方法

getconstructors // 獲取所有public構造方法

getconstructor(new class ) //獲取指定引數列表的可見構造方法

getdeclaredconstructor(new class)// 獲取宣告的構造方法(包括私有的)

getdeclaredconstructors //獲取所有構造方法(包括私有的)

1.2.2 根據構造方法建立物件

cons.newinstance(new object)

1.3 field(描述屬性的類)

1.3.1 獲取屬性

field fs1 = c.getfields(); // 獲取擁有的public的屬性(包括繼承來的屬性)

field fs2 = c.getdeclaredfields(); // 獲取自己類中宣告的屬性(包括私有屬性)

field f1 = c.getfield(「name」);

field f2 = c.getdeclaredfield(「name」);

1.3.2 訪問屬性

feild f = c.getfeild(「name」);

f.set(obj,value);// 設定obj物件的name屬性值為value,相當於obj.name = value;

object value = f.get(obj); // 獲取obj物件的name屬性值 相當於 object value = obj.name;

f.setaccessible(true); // 設定name屬性可以被訪問(修改訪問許可權,private也可以修改)

1.4 method(描述方法的類)

1.4.1 獲取方法

c.getmethod(name, parametertypes)

c.getmethods()

c.getdeclaredmethod(name, parametertypes)

c.getdeclaredmethods()

1.4.2 執行方法

method m1 = c.getmethod(「eat」, new class{});

// 執行對應的方法

object r = m1.invoke(o, new object{});// 執行o物件的eat方法,用r來接收返回值

m1.setaccessible(true);

Java基礎 反射

public class getconstructor1 獲取乙個類的所有構造方法,包括似有的 constructor constructors2 clazz1.getdeclaredconstructors for constructor constructor constructors2 獲取單...

java反射基礎

反射就是在執行時才知道要操作的類是什麼,並且可以在執行時獲取類的完整構造,並呼叫對應的方法。1 通過 class 類獲取成員變數 成員方法 介面 超類 構造方法 getname 獲得類的完整名字。getfields 獲得類的public型別的屬性。getdeclaredfields 獲得類的所有屬性...

java反射基礎

反射 反射 將類的各個組成部分封裝為其他物件,這就是反射機制 好處 1.可以在程式執行過程中,操作這些物件。2.可以解耦,提高程式的可擴充套件性。獲取class物件的方式 1.class.forname 全類名 將位元組碼檔案載入進記憶體,返回class物件 多用於配置檔案,將類名定義在配置檔案中。...