Java的反射機制2
Java 語言的反射機制
在執行時判斷任意一個物件所屬的類。
在執行時構造任意一個類的物件。
在執行時判斷任意一個類所具有的成員變數和方法。
在執行時呼叫任意一個物件的方法
Reflection(API)
在JDK中,主要由以下類來實現Java反射機制,這些類都位於java.lang.reflect包中: Class類:代表一個類。 Field 類:代表類的成員變數(成員變數也稱為類的屬性)。 Method類:代表類的方法。 Modifier類:代表修飾符。 Constructor 類:代表類的構造方法。 Array類:提供了動態建立陣列,以及訪問陣列的元素的靜態方法。
Class中的常用方法(獲得類的構造方法)
getConstructors():獲得類的所有的public型別的構造方法。
getDeclaredConstructors():獲得類所有的構造方
getConstructor(Class[] parameterTypes):獲得類的特定public的構造方法
parameterTypes 引數指定構造方法的引數型別。
getDeclaredConstructor(Class[] parameterTypes):獲得類指定的所有的構造方法
## 軟體包 java.lang.reflect 的描述
提供類和介面,以獲得關於類和物件的反射資訊。
在安全限制內,反射允許程式設計訪問關於載入類的欄位、方法和構造方法的資訊,並允許使用反射欄位、方法和構造方法對其底層對等項進行操作。
Java的反射機制是指在程式的執行狀態中,可以構造任意一個類的物件,可以瞭解任意一個物件所屬的類,可以瞭解任意一個類的成員變數和方法,
可以呼叫任意一個物件的屬性和方法
jdbc(資料庫連線技術)在載入驅動時運用到了反射技術
然後我們瞭解一下java程式執行過程和使用反射後java程式的執行過程:
java程式執行過程:Student.java==>編譯==>Student.class==>java虛擬機器==>執行程式
java放射: ?==>編譯器==>執行程式==>編譯器
反射機制和java.lang.Class<T>這個類息息相關,因為z整個反射機制j就是基於對Class物件的操作,瞭解反射之前,我們需要先了解這個類.
Class這個類很特殊的一個名字對吧,那麼它的意義肯定也非同一般。一句話,Class這個類就代表z正在執行的java應用程式的類和介面。
如果把一個類比作成一個人,那麼Class物件就相等於這個人的資料卡片,關於這個人的一起都在這個小小的資料卡片中儲存著。
下面是程式碼:
package reflect;
import pojo.student;
public class demo1 {
public static void main(String[] args) {
student stu=new student();
Class cla=stu.getClass();
Class cla2=student.class;
Class cla3=null;
try {
Class.forName("pojo.student");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(cla==cla2);
System.out.println(cla2==cla3);
System.out.println(cla==cla3);
}
}