1. 獲取Class對(duì)象的三種方式:
1> Class.forName("完整的類名字符串");
完整類名字符串是指 包名.類名
2> 類名.class;
3> 指定類對(duì)象.getClass();
最常用的是Class.forName("完整的類名字符串");
后期大量使用
2. Constructor, Method, Field
都是Java反射這個(gè)包里面的類 java.lang.reflect
Constructor 是構(gòu)造方法類
Method 是成員方法類
Field 是成員變量類
3. Constructor常用方法:
Constructor[] getConstructors(); 獲取所有public修飾的構(gòu)造方法
Constructor[] getDeclaredConstructors(); 獲取當(dāng)前類里面所有的構(gòu)造方法膜赃,包含用private修飾的構(gòu)造方法
Constructor getConstructor(Object... paramterTyeps);
根據(jù)所需參數(shù)不同挺邀,獲取指定的構(gòu)造方法對(duì)象
Constructor getDeclaredConstructor(Object... paramterTyeps);
根據(jù)所需參數(shù)不同,獲取指定的構(gòu)造方法對(duì)象跳座,包括私有化的方法
Object newInstance(Object... initargs);
給予確定的參數(shù)端铛,通過(guò)反射調(diào)用構(gòu)造方法,這里的參數(shù)列表是一個(gè)不定參數(shù)列表
4. Method常用方法
Method[] getMethods();
獲取當(dāng)前類里面所有的public修飾的成員方法躺坟,這里或顯示父類繼承而來(lái)的public方法
Method[] getDeclaredMethods();
獲取當(dāng)前類里面的所有方法沦补,包括private修飾的方法,但是會(huì)過(guò)濾父類繼承而來(lái)的方法
Method getMethod(String methodName, Object... args);
根據(jù)方法的名字和對(duì)應(yīng)的參數(shù)列表咪橙,獲取指定方法
Method getDeclaredMethod(String methodName, Object... args);
根據(jù)方法的名字和對(duì)應(yīng)的參數(shù)列表,獲取指定方法,可以獲取private修飾的方法
invoke(Object obj, Object... args);
執(zhí)行成員方法的函數(shù)美侦,第一個(gè)參數(shù)是執(zhí)行該方法的類對(duì)象产舞,第二個(gè)參數(shù)是執(zhí)行該方法需要的參數(shù)列表
5. Field常用方法
Field[] getFields();
獲取所有的用public修飾的成員變量
Field[] getDeclaredFields();
獲取所用成員變量,包括用private 修飾的成員變量
Field getField(String fieldName);
根據(jù)成員變量的名字獲取對(duì)應(yīng)的成員變量
Field getDeclaredField(String fieldName);
根據(jù)成員變量的名字獲取包括private修飾在內(nèi)的成員變量
set(Object obj, Object value);
設(shè)置成員變量的數(shù)值菠剩,第一個(gè)參數(shù)是調(diào)用該成員變量的對(duì)象易猫,第二個(gè)參數(shù)是賦予數(shù)值
6. 暴力反射賦予權(quán)限的函數(shù)
setAccessible(boolean )