在下面的枚举中,我看到Message
枚举中存在三个不同类别的消息:Form
,Site
和Admin
。
是否可以在枚举中实现一种namespace
机制,以便代替编写
Message.SITE_ERROR
Message.ADMIN_ERROR
你写的,这个:
Message.Site.ERROR
Message.Admin.ERROR
以便Site
和Admin
代表“命名空间”,在其下面可以存在其他类别的消息?
public enum Message {
//FORM
FORM_EMPTY("You've gotta put something in the form."),
//SITE
SITE_ERROR("Whoa. What happened?"),
SITE_ALERT("Hey, it's that time again.");
//ADMIN
ADMIN_ERROR("Gotta look into this, dude."),
ADMIN_ALERT("Time to get the lead out.");
private String messageString;
private Message(String messageString){
this.messageString=messageString;
}
@Override
public String toString() {
return messageString;
}
}
答案 0 :(得分:0)
您可以使用套餐吗?
例如:
com.foo.messages
是您的基础套餐。然后你可以从那里扩展
com.foo.messages.site
com.foo.messages.admin
等等......
答案 1 :(得分:0)
您可以使Message
界面声明枚举Site
和Admin
。但是,当然,你不能传递一个Message
对象并期望一个枚举,只是一个Message.<something>
对象。
你想要什么?
答案 2 :(得分:0)
当然,只需使用内部类。
public interface State {
String getMessageString();
}
public class Message {
public static enum Form implements State {
EMPTY("You've gotta put something in the form."),
private final String msg;
public Form(String msg) { this.msg = msg; }
public String getMessageString() { return msg; }
}
public static enum Site implements State {
ERROR("Whoa. What happened?"),
ALERT("Hey, it's that time again.");
private final String msg;
public Site(String msg) { this.msg = msg; }
public String getMessageString() { return msg; }
}
public static enum Admin implements State {
ADMIN_ERROR("Gotta look into this, dude."),
ADMIN_ALERT("Time to get the lead out.");
private final String msg;
public Admin(String msg) { this.msg = msg; }
public String getMessageString() { return msg; }
}
}
我认为你可以用一个共同的基类来摆脱重复的代码但是我的记忆在扩展枚举上是模糊的,所以这可能不起作用......