我有一个看起来像这样的类:
public class MessageBuilder{
private enum MsgCodes{
CODE_1("some string"),
CODE_2("another string"),
CODE_3("you get the idea");
private String msg;
MsgCodes(String msg){
this.msg = msg;
}
private String text(){
return msg;
}
}
private MessageBuilder(){
//prevents initialization outside the class
}
//Gives synchronized behaviour to initialization without enforcing it into getInstance()
private static class Loader{
static MessageBuilder INSTANCE = new MessageBuilder();
}
public static MessageBuilder getInstance(){
return Loader.INSTANCE;
}
public String buildMessage(String[] codes){
String res = "";
for(String code : codes){
res += QAmsg.valueOf(code).text();
}
return res;
}
}
我担心的是加类(意味着随着应用程序的开发)我将在这个类上拥有越来越多的 enum
(我理解这不仅是一种很好的方式,而且甚至是保持使用常量的首选方式只有一个类),我对 enum
比较陌生,所以我真的不知道如果这个列表变得“太大”会发生什么,这仍然是保留它们的有效方法吗?
我是否可以使用不同的方法,而不是整个列表,而只是我当时使用的一个代码被实例化? enum
实例会只出现一次,还是每次我使用它们时都会实例化所有内容?
我认为这会阻止我多次实例化 enum
列表,但这可能是不必要的,因为我不完全理解 enum
行为。
最佳答案
枚举成员只是 public static final
常量,因此是单例。假设您的列表增长到 10,000 个枚举成员,每个成员花费 1 KB。即使在这些夸张的假设下,它也将达到 10 MB 的 Java 堆。
很明显,你不应该担心枚举成员的内存消耗。
关于java - 在内存方面对许多常量使用枚举是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39457229/