Art*_*rez 2 java enums constants java-8
我有一个看起来像这样的类:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我担心的是加班(意思是应用程序开发)我会enum在这个类上有越来越多的东西(我理解这不仅是一个好的,甚至是保持常量只用于一个类的首选方法),我相当新对enum,所以我真的不知道,如果这个名单变成"过大"会变成这样还是一种有效的方式,让他们会发生什么?
是否有不同的方法,我可以用这样不是整个名单,但只是一个代码,我使用的时候被实例化?这些enum实例只有一次,还是每次使用它时都会实现一切?
我让这个类成为单身人士,认为这会阻止我enum不止一次实例化列表,但这可能是不必要的,因为我不完全理解enum行为.
枚举成员只是public static final常数,因此是单身人士.假设您的列表增长到10,000个枚举成员,每个成本为1 KB.即使在这些奢侈的假设下,它也将达到10 MB的Java堆.
很明显,你不应该担心枚举成员的内存消耗.