1. 程式人生 > >[Java 15 反射機制 ] 類的生命週期 與 反射總結

[Java 15 反射機制 ] 類的生命週期 與 反射總結

15.6 類的生命週期
   在一個類編譯完成之後,下一步就要開始使用類,如果要使用一個類,離不開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, 在程式的開發中,使用反射機制並結合屬性檔案,可以達到程式程式碼與配置檔案相分隔的目的。