關於java類裝載器與反射機制的理解

類裝載器ClassLoader

一,作用

  將一個java字節碼文件裝入JVM(java虛擬機)中,步驟如下:
      (1)裝載,查找和導入Class文件
      (2)鏈接,校驗、準備和解析步驟
               ①校驗:檢查載入Class文件的正確性
               ②準備:給類的靜態變量分配存儲空間
               ③解析:將符號引用轉換爲
      (3)初始化,對類的靜態變量,靜態代碼塊執行初始化工作。

二,類裝載器的分類
      (1)ClassLoader(根裝載器):負責裝載JRE核心類庫
      (2)ExtClassLoader(拓展類裝載器):ClassLoader的子類,負責裝載JRE拓展目錄ext中的JAR包
      (3)AppClassLoader(應用類裝載器):ExtClassLoader的子類,負責裝載classpath路徑下的類包

三,類實例、類描述對象和類裝載器的關係如圖:

     每個類在JVM中都有一個對應的java.lang.Class對象,它提供了類的結構信息描述,數組、枚舉、註解及基本java類型(如int、double等)。Class是對象在裝載時,由JVM調用類裝載器的defineClass()方法自動構造的。

四,JAVA反射機制

     通過從Class對象中獲取構造函數、成員變量、方法類等元素的反射對象,並以編程方式通過這些反射對象對目標類進行操作。常見的有以下主要反射類:
    (1)Construcor:類的構造函數反射類,通過Class#getConstructs()方法獲取類的所有構造函數反射對象數組Construcor[]。
      (2)Method:類方法反射類,通過Class#getDeclaredMethods()方法獲取類的所有方法反射類對象數組Method[]。
      (3)Field:類的成員變量反射類,通過Class#getDeclaredFields()方法獲取類的所有成員變量反射類對象數組Method[]。等等反射類。。。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章