我只是问自己一个小问题,我不确定我是否能找到正确答案:
如果我在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将如何处理?
感谢您的回答 - 是的,这主要是好奇心
答案 0 :(得分:4)
是的,即使您只使用一个ENUM常量,所有内容都将被加载到内存中。
枚举是特殊类型的类,所有字段都是常量,因此当您加载ENUM时,它本身会将所有内容加载到内存中。
答案 1 :(得分:4)
第一次使用枚举时,将触发类初始化,所有值都将被创建并存储在内存中,就像任何其他类一样。
答案 2 :(得分:1)
你总是可以自己尝试一下。只需将System.println("test")
放在enum
的构造函数中,然后凭经验接受结果。