[英]Is it possible to implement a form of namespacing in Java Enums?
在下面的枚舉中,我看到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;
}
}
您可以使用包裹嗎?
例如:
com.foo.messages
是您的基本包裝。 然后,您可以從中擴展
com.foo.messages.site
com.foo.messages.admin
等等...
您可以將Message
聲明為枚舉Site
和Admin
的接口。 但是,當然,您不能傳遞Message
對象並期望枚舉,而只能是Message.<something>
對象。
你要干嘛
當然,只使用內部類。
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; }
}
}
我認為您可能會擺脫帶有通用基類的重復代碼,但是我對擴展枚舉的記憶模糊,因此可能無法正常工作...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.