關於jvm載入類的實現順序
public class CachingEnumResolver {
private static Map CODE_MAP_CACHE;
private static CachingEnumResolver SINGLE_ENUM_RESOLVER = new CachingEnumResolver();
static {
CODE_MAP_CACHE = new HashMap();
CODE_MAP_CACHE.put( "0", "北京市" );
}
public static CachingEnumResolver getInstance() {
return SINGLE_ENUM_RESOLVER;
}
public void initEnums() {
if( null == CODE_MAP_CACHE ) {
System.out.println( "CODE_MAP_CACHE為空,問題在這裡開始暴露." );
CODE_MAP_CACHE = new HashMap();
}
CODE_MAP_CACHE.put( "1", "北京市" );
CODE_MAP_CACHE.put( "2", "雲南省" );
}
public CachingEnumResolver() {
initEnums();
}
public Map getCache() {
return Collections.unmodifiableMap( CODE_MAP_CACHE );
}
public static void main(String[] ars){
CachingEnumResolver resolver = CachingEnumResolver.getInstance();
Map map = resolver.getCache();
for( Object key : map.keySet() ) {
System.out.print( key+"------------->" );
System.out.print( map.get( key ));
}
}
}
結果:
CODE_MAP_CACHE為空,問題在這裡開始暴露.
0------------->北京市
看了一篇文章《神祕的類和物件初始化過程》,又熟悉了一遍關於jvm載入類的實現過程。總結了一下關於類的載入順序:
開始
1.靜態欄位
2.靜態塊
//如果你的呼叫為new,則繼續執行下面的。如果沒有new,而是通過靜態方法第一次訪問該類,則到此處就返回了。
3.欄位(非靜態塊)
4.建構函式
返回
父類1-->父類2-->子類1-->子類2-->父類3-->父類4-->子類3-->子類4
(以上說明先類的後物件的.在此基礎上先父類,後子類)-->先類先父
根據上面的例子說明一下:上面剛剛初始化靜態欄位的時候就有new的呼叫,所以先呼叫建構函式來執行。完成後執行靜態塊把原來賦好的值給覆蓋掉了,結果才出現那種情況。
相關文章
- JVM類載入機制與類初始化順序JVM
- java類載入順序Java
- Java父子類載入順序Java
- DS順序表--類實現
- JVM效能最佳化 —— 類載入器,手動實現類的熱載入JVM
- javascript載入順序JavaScript
- java中帶繼承類的載入順序詳解及實戰Java繼承
- JVM載入TimeZone讀取檔案優先順序實戰分析JVM
- [Web]HTML載入順序WebHTML
- jvm類載入JVM
- [JVM]類載入JVM
- 類script標籤,非同步載入,順序執行非同步
- Python 模組的載入順序Python
- 物件導向 -- 類的載入順序 類和物件的名稱空間物件
- 順序表的實現
- 關於 Promise 的執行順序Promise
- 關於RocketMQ的順序訊息MQ
- 【JVM】JVM之類載入器JVM
- 頁面載入順序jQueryjQuery
- windows驅動載入順序Windows
- JVM-類載入JVM
- JVM 之類載入JVM
- 類載入器(JVM)JVM
- 轉: 關於oracle 是按照寫入順序還是ROWID順序取資料Oracle
- js——<script>標籤的載入順序JS
- 影像延遲載入 && 列表圖順序載入
- 順序棧的實現方式
- SpringBoot配置檔案優先順序載入順序Spring Boot
- 關於java的初始化順序Java
- JVM入門--類載入器JVM
- 關於java中的類載入器Java
- JVM:類載入機制JVM
- JVM類載入機制JVM
- Java jvm 類載入 反射JavaJVM反射
- JVM類載入過程JVM
- JVM 類載入機制JVM
- Spring如何控制Bean的載入順序SpringBean
- Java實現順序表Java