[Java 15 反射機制 ] 類的生命週期 與 反射總結
阿新 • • 發佈:2019-02-03
15.6 類的生命週期
在一個類編譯完成之後,下一步就要開始使用類,如果要使用一個類,離不開JVM。在程式執行中 JVM 通過 裝載,連結,初始化 3個步驟完成,類的裝載就是通過類載入器把 *.class 檔案裝入 JVM 的方法區,並在堆區建立描述該類的 java.lang.Class 物件,用來封裝資料。同一個類之能被JVM載入一次。連結就是把二進位制資料組裝成可以執行的狀態。
連結分為 : 1, 校驗 2, 準備 3, 解析
(1), 校驗 用來確認此二進位制檔案是否適合當前的 JVM (版本)
(2), 準備 就是為靜態成員分配記憶體空間,
(3), 解析 轉換常量池的程式碼引用為直接引用的過程,直到所有的符號引用都可被執行程式使用(建立完整的對應關係)。
完成之後,型別即可初始化,初始化之後類的物件就可以正常地使用,直到一個物件不再使用之後,將垃圾回收,釋放空間。當沒有任何引用指向Class 物件時將會解除安裝,結束類的生命週期,以上所講解的生命週期如圖所示。
1, Class 類是反射機制操作的源頭
2, Class 類的物件有 3 種例項化方式 『Object 的 getClass, 類.class, Class.forName 』
3, 可以通過 Class 類的 newInstance() 方法進行物件的例項化操作,要求類中必須存在無參構造方法,如果類中沒有無參構造方法 , 只能使用Constuctor 類完成物件的例項化。
4, 可以通過反射取得一個類所繼承的父類,實現的介面,類中的全部構造方法,全部普通方法及全部屬性
5, 使用反射機制可以通過 Method 呼叫類中的方法,也可以直接操作類的屬性
6, 動態代理可以解決開發中代理類過多的問題,提供統一的代理功能實現
7, 在程式的開發中,使用反射機制並結合屬性檔案,可以達到程式程式碼與配置檔案相分隔的目的。
在一個類編譯完成之後,下一步就要開始使用類,如果要使用一個類,離不開JVM。在程式執行中 JVM 通過 裝載,連結,初始化 3個步驟完成,類的裝載就是通過類載入器把 *.class 檔案裝入 JVM 的方法區,並在堆區建立描述該類的 java.lang.Class 物件,用來封裝資料。同一個類之能被JVM載入一次。連結就是把二進位制資料組裝成可以執行的狀態。
連結分為 : 1, 校驗 2, 準備 3, 解析
(1), 校驗 用來確認此二進位制檔案是否適合當前的 JVM (版本)
(2), 準備 就是為靜態成員分配記憶體空間,
(3), 解析 轉換常量池的程式碼引用為直接引用的過程,直到所有的符號引用都可被執行程式使用(建立完整的對應關係)。
完成之後,型別即可初始化,初始化之後類的物件就可以正常地使用,直到一個物件不再使用之後,將垃圾回收,釋放空間。當沒有任何引用指向Class 物件時將會解除安裝,結束類的生命週期,以上所講解的生命週期如圖所示。
裝載 --> 連結(校驗,準備,解析) --> 初始化 --> 物件例項化 --> 垃圾回收 --> 物件終結 --> 解除安裝 7步
1, Class 類是反射機制操作的源頭
2, Class 類的物件有 3 種例項化方式 『Object 的 getClass, 類.class, Class.forName 』
3, 可以通過 Class 類的 newInstance() 方法進行物件的例項化操作,要求類中必須存在無參構造方法,如果類中沒有無參構造方法 , 只能使用Constuctor 類完成物件的例項化。
4, 可以通過反射取得一個類所繼承的父類,實現的介面,類中的全部構造方法,全部普通方法及全部屬性
5, 使用反射機制可以通過 Method 呼叫類中的方法,也可以直接操作類的屬性
6, 動態代理可以解決開發中代理類過多的問題,提供統一的代理功能實現
7, 在程式的開發中,使用反射機制並結合屬性檔案,可以達到程式程式碼與配置檔案相分隔的目的。