發布時間: 2019-06-29 21:14:43
反射的概述
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
反射機制可以說是Java框架設計的靈魂。
其實反射就是對一個類進行解剖,要想解剖一個類,必須先要獲取到該類的字節碼文件對象。而解剖使用的就是Class類中的方法.所以先要獲取到每一個字節碼文件對應的Class類型的對象.
反射就是把java類中的各種成分映射成一個個的Java對象
例如:一個類有:成員變量、方法、構造方法、包等等信息,利用反射技術可以對一個類進行解剖,把個個組成部分映射成一個個對象。
?。ㄆ鋵崳阂粋€類中這些成員方法、構造方法、在加入類中都有一個類來描述)
如圖是類的正常加載過程:反射的原理在與class對象。
熟悉一下加載的時候:Class對象的由來是將class文件讀入內存,并為之創建一個Class對象。
??
其中,在反射機制中,Class對象是一個很特殊的對象,所以我們先了一下Class對象
Class類在API中的詳解
Class類是屬于lang包中的一個類,Class類的實例表示的是正在運行中的Java應用程序中的類和接口。也就是JVM中有N個實例所對應類都有對應的Class對象。
Class類沒有公共的構造方法,也就意味著我們不能手動的去創建這個類的對象,它只能是由JVM創建,我們只需要獲取使用即可。
Class對象的獲取
獲取Class對象的三種方式
a)通過Object類,調用getClass()方法獲取
b)任何數據類型(包括基本數據類型)都會有一個“靜態”的class屬性
c)通過Class類的靜態方法獲?。篺orName(String className)
注意;在運行期間,一個類,只有Class對象產生。
三種方式常用第三種,第一種對象都有了還要反射干什么。第二種需要導入類的包,依賴太強,不導包就拋編譯錯誤。一般都第三種,一個字符串可以傳入也可寫在配置文件中等多種方法。?