我有一个看起来像这样的课程:
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
行为。
答案 0 :(得分:7)
枚举成员只是public static final
常数,因此是单身人士。假设您的列表增长到10,000个枚举成员,每个成本为1 KB。即使在这些奢侈的假设下,它也将达到10 MB的Java堆。
很明显,你不应该担心枚举成员的内存消耗。