1. 程式人生 > 實用技巧 >Java的反射機制2

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);
}
}

心得總結:少說話多做事,常常學習少生氣。別怨言,別亂管事,分內分外分清楚。