4

我只是问自己一个小问题,我不确定我是否能找到正确的答案:

如果我在 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 将如何准确处理?

感谢您的回答-是的,这主要是好奇

4

3 回答 3

4

是的,即使您只使用一个 ENUM 常量,所有内容都将加载到内存中。

枚举是类的特殊类型,所有字段都是常量,因此当您加载 ENUM 时,它本身会将所有内容加载到内存中。

于 2012-10-24T14:24:35.100 回答
4

第一次使用枚举时,将触发类初始化,所有值都将被创建并存储在内存中,就像任何其他类一样。

于 2012-10-24T14:25:09.233 回答
1

你总是可以自己尝试。只需将例如System.println("test")放在您的构造函数中enum并凭经验接受结果。

于 2012-10-24T14:31:24.477 回答