簡體   English   中英

ENUM存儲(內存等)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM