在Java運行時環(huán)境中,對于任意一個類,可以知道這個類有哪些屬性和方法。對于任意一個對象,可以調用它的任意一個方法。 這種動態(tài)獲取類的信息以及動態(tài)調用對象的方法的功能來自于Java 語言的反射(Reflection)機制。
Java 反射機制主要提供了以下功能 在運行時判斷任意一個對象所屬的類。 在運行時構造任意一個類的對象。 在運行時判斷任意一個類所具有的成員變量和方法。 在運行時調用任意一個對象的方法
關于JAVA更多反射機制的資料以及跟高手學習機會,可以加到群422,然后就是912,加上最后的489,感覺還不錯?,F在才開始學反射機制沒多久,差不多已經把這一塊搞清楚了
反射的常用類和函數:Java反射機制的實現要借助于4個類:Class,Constructor,Field,Method;其中class代表的是類對象,Constructor-類的構造器對象,Field-類的屬性對象,Method-類的方法對象,通過這四個對象我們可以粗略的看到一個類的各個組成部分。其中最核心的就是Class類,它是實現反射的基礎,它包含的方法我們在第一部分已經進行了基本的闡述。應用反射時我們最關心的一般是一個類的構造器、屬性和方法,下面我們主要介紹Class類中針對這三個元素的方法:
1、得到構造器的方法
Constructor getConstructor(Class[] params) -- 獲得使用特殊的參數類型的公共構造函數,
Constructor[] getConstructors() -- 獲得類的所有公共構造函數
Constructor getDeclaredConstructor(Class[] params) -- 獲得使用特定參數類型的構造函數(與接入級別無關)
Constructor[] getDeclaredConstructors() -- 獲得類的所有構造函數(與接入級別無關)
2、獲得字段信息的方法
Field getField(String name) -- 獲得命名的公共字段
Field[] getFields() -- 獲得類的所有公共字段
Field getDeclaredField(String name) -- 獲得類聲明的命名的字段
Field[] getDeclaredFields() -- 獲得類聲明的所有字段 3、獲得方法信息的方法
Method getMethod(String name, Class[] params) -- 使用特定的參數類型,獲得命名的公共方法
Method[] getMethods() -- 獲得類的所有公共方法
Method getDeclaredMethod(String name, Class[] params) -- 使用特寫的參數類型,獲得類聲明的命名的方法
Method[] getDeclaredMethods() -- 獲得類聲明的所有方法
在程序開發(fā)中使用反射并結合屬性文件,可以達到程序代碼與配置文件相分離的目的 如果我們想要得到對象的信息,一般需要“引入需要的‘包.類’的名稱——通過new實例化——取得實例化對象”這樣的過程。使用反射就可以變成“實例化對象——getClass()方法——得到完整的‘包.類’名稱”這樣的過程。 正常方法是通過一個類創(chuàng)建對象,反射方法就是通過一個對象找到一個類的信息。 |
|
來自: 昵稱21272883 > 《待分類1》