java反射筆記整理

2021-09-14 04:21:15 字數 1858 閱讀 7824

1.class物件的三種獲取方式

@test

public void threemethodforclassobj() throws classnotfoundexception

2.獲取父類class物件

/**

* 獲取父類class物件,由於單一繼承特性,所以只會獲取到乙個class物件

*/@test

public void getsupperclass()

3.獲取實現的介面class物件

/**

* 獲取類實現的所有介面《由於介面可以多實現,所以獲取的介面為乙個陣列

* 只能獲取到當前類實現的介面,不能獲取到父類實現的介面

*/@test

public void getinte***ces()

}

1.常用物件-field

a.獲取field的兩種方式對比

/**

* 根據class物件獲取類的成員變數

* @throws nosuchfieldexception

*/@test

public void getfields() throws nosuchfieldexception

//獲取當前類所有的變數,private、protected、public……以及從父類繼承過來的public型別的變數

field fields2 = clazz.getdeclaredfields();

for (field field : fields2)

//還可以指定變數名獲取類的變數

field idfield = clazz.getfield("id");

log.debug("指定名稱獲取public變數:%s", idfield.getname());

field usernamefield = clazz.getdeclaredfield("username");

log.debug("指定名稱獲取變數:%s", usernamefield.getname());

}

b.遞迴獲取類的所有成員變數,包括父類所有成員變數

@test

public void getallfields()

tempclass = tempclass.getsuperclass();

}setclassnames = map.keyset();

for (string classname : classnames)

}}

c.獲取成員變數的修飾符

/**

* 變數的修飾符是通過int型別的數字表示的

* 常見的數字與修飾符關係如下

* int publiccode = modifier.public;//1

int privatecode = modifier.private;//2

int protectedcode = modifier.protected;//4

int staticcode = modifier.static;//8

*/@test

public void getfieldmodifiers()

}

d.獲取成員變數的資料型別

/**

* 獲取變數的型別之後可以通過判斷變數型別給變數賦值

*/@test

public void getfieldtype()

}

2.常用物件-method

3.常用物件-constructor

Java筆記 反射

反射是通過class的forname方法拿到該類 然後再用這個class物件的newinstance方法得到乙個該類的物件 execlass class.forname string classqualifiedname exeobj execlass.newinstance 接下來就是傳引數的細節...

JAVA反射基礎知識整理

2.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...

java 反射知識點整理

1.1 class類 獲取class物件的三種方式 方式一 通過object類中的getobject 方法 person p new person class c p.getclass 方式二 通過 類名.class 獲取到位元組碼檔案物件 任意資料型別都具備乙個class靜態屬性,看上去要比第一種...