[英]ENUM storage (memory, etc)
我只是問自己一個小問題,我不確定我是否能找到正確答案:
如果我在Java中使用ENUM,使用自己的構造函數(以及許多,許多,maaaaany參數) - 每次程序執行時存儲在內存中的那些,或者它們是否僅在內存中“加載”,如果它們被使用?
我的意思是,如果我有一個包含400個條目的ENUM,並且只使用其中一個條目 - 所有其他條目仍然存在於內存中嗎?
一些偽代碼:
public enum Type {
ENTRY_A(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
ENTRY_B(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
ENTRY_C(val1, val2, val3, val4, new Object(val5, val6, val7, ...)),
...
}
如果我只使用ENTRY_A,並且不要觸及ENTRY_B,ENTRY_C等 - 那么Java將如何處理?
謝謝你的回答 - 是的,這主要是好奇心
是的,即使您只使用一個ENUM常量,所有內容都將加載到內存中。
枚舉是特殊類型的類,所有字段都是常量,因此當您加載ENUM時,它本身會將所有內容加載到內存中。
第一次使用枚舉時,將觸發類初始化,所有值都將被創建並存儲在內存中,就像任何其他類一樣。
你總是可以自己嘗試一下。 只需將例如System.println("test")
放在enum
的構造函數中,然后根據經驗包含結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.