這篇文章說一些關于反射的東西
先來了解一下關于java中類加載機制的東西
類加載器
什麼是類的加載
當程式要使用某個類時,如果該類還未被加載到記憶體中,則系統會通過加載,連接配接,
初始化三步來實作對這個類進行初始化。
一個類在加載過程中的三部曲:
1.加載
就是指将class檔案讀入記憶體,并為之建立一個Class對象.
任何類被使用時系統都會建立一個Class對象
2.連接配接
驗證 是否有正确的内部結構,并和其他類協調一緻
準備 負責為類的靜态成員配置設定記憶體,并設定預設初始化值
解析 将類的二進制資料中的符号引用替換為直接引用
3.初始化 就是我們以前講過的初始化步驟
(2)類的加載時機(掌握)
建立類的執行個體
通路類的靜态變量,或者為靜态變量指派
調用類的靜态方法
使用反射方式來強制建立某個類或接口對應的java.lang.Class對象
初始化某個類的子類
直接使用java.exe指令來運作某個主類
(3)加載器分類
類加載起的作用?
負責将.class檔案加載到内在中,并為之生成對應的Class對象。
類加載器的分類
Bootstrap ClassLoader 根類加載器
也被稱為引導類加載器,負責Java核心類的加載
比如System,String等。在JDK中JRE的lib目錄下rt.jar檔案中
Extension ClassLoader 擴充類加載器
負責JRE的擴充目錄中jar包的加載。
在JDK中JRE的lib目錄下ext目錄

Student.java--Student.class(位元組碼檔案)--看成一個對象,這個對象就叫位元組碼檔案對象--對應的類Class
什麼是反射?(畫圖描述)
反射就是通過位元組碼檔案對象去使用成員。
(1)擷取位元組碼檔案對象的三種方式:
Object類的getClass()方法
資料類型的靜态class屬性
Class類的靜态方法forName()
使用反射的方式建立對象,調用方法。
建立某一個類對應的位元組碼檔案對象 -- 全類名(className=com.edu_01.Person)
将對象需要調用的方法,依然利用反射的方式擷取該方法的對應的對象 -- 方法名(classMethod=study)
舉例:第十七次代碼com.edu_06。
通過反射來擷取成員變量: