簡單的來說,就是在程式執行時,獲取類所有屬性和方法資訊
還可以動態建立乙個物件,並且呼叫它的任意乙個方法、訪問和修改任意乙個屬性,包括private修飾的方法和屬性。
獲得class物件的三種方法
child child = new child();
class yclass = child.getclass();
class mclass = child.class;
class myclass = class.forname("reflect.child");
建立例項物件
class mclass = child.class;
// 方法一
object object = mclass.newinstance();
// 方法二
constructor constructor = mclass.getconstructor();
object object = constructor.newinstance();
// 構造帶引數的
constructor constructor = mclass.getconstructor(string.class);
object object = constructor.newinstance("myname");
獲取類的成員變數資訊
private static void printfields(class mclass)
/*** getdeclaredfields()
* 獲取所有本類宣告變數(不包括父類的變數)
*/field selffields = mclass.getdeclaredfields();
for (field field : selffields)
}private static void getfieldinfo(field field)
//獲取指定註解
resource resource = field.getannotation(resource.class);
if (resource != null)
}
獲取類的方法資訊
private static void printmethods(class mclass)
/*** getdeclaredmethods()
* 獲取所有本類宣告方法(不包括父類的方法)
*/method selfmethods = mclass.getdeclaredmethods();
for (method method : selfmethods)
}private static void getmethodinfo(method method)
class exceptiontypes = method.getexceptiontypes();
for (class c : exceptiontypes)
annotation annotations = method.getdeclaredannotations();
for (annotation annotation : annotations)
}
執行方法
private static void invokemethod(class mclass) throws
nosuchmethodexception, illegalacces***ception,
instantiationexception, invocationtargetexception
private static void modifyprivatefield() throws
nosuchfieldexception, illegalacces***ception,
instantiationexception, nosuchmethodexception,
invocationtargetexception
反射的用法總結
一 反射物件的例項變數 繫結方法 import time class perosn def init self,name,birth self.name name self.birth birth property def age self return time.localtime tm year...
JAVA的反射總結
1.class.forname總結 1.1 原始型別採用class clazz class.forname i getcomponenttype 1.2 類陣列情況採用 lfullclassname 1.3 類情況採用fullclassname 2.class的關鍵函式總結 2.1.1 class....
JAVA高階用法 反射(一)
引言 這裡結合工廠模式和介面來記錄對於反射的理解。和文字部分源於網路。對其進行了重新整理。反射機制對於普通開發者而言,意義不大,一般都是作為一些系統的架構設計去使用的,包括以後學習的開源框架,幾乎都使用了反射機制。反射概念package reflection public class demo 獲取...