Java類加載時機

如下五種狀況下java類會進行「初始化」:java

(1)遇到new、getstatic、putstatic或invokestatic。場景:實例化對象、讀取或設置一個類的靜態字段(被final修飾、已在編譯期把結果放入常量池的靜態字段除外)、調用一個類的靜態方法的時候。spa

(2)使用java.lang.reflect包的方法對類進行反射調用的時候,若是類沒有進行過初始化,則須要先觸發其初始化。對象

(3)初始化一個類以前,先初始化其父類get

(4)當虛擬機啓動時,用戶須要指定一個要執行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類虛擬機

(5)當使用JDK1.7的動態語言支持時,若是一個java.lang.invoke.MethodHandle實例最後的解析結果REF_getStatic、REF_putStatic、REF_invokeStatic的方法句柄,而且這個方法句柄所對應的類沒有進行過初始化,則須要先觸發其初始化。編譯

相關文章
相關標籤/搜索