2011-08-22 51 views
2

在下面的枚舉中,我看到存在於Message枚舉中的三種不同類別的消息:Form,SiteAdmin是否可以在Java Enums中實現一種名稱空間的形式?

是否有可能實現一個枚舉類型的namespace機制,使,而不是寫

Message.SITE_ERROR 
Message.ADMIN_ERROR 

你寫的,這一點:

Message.Site.ERROR 
Message.Admin.ERROR 

使SiteAdmin代表「命名空間「下面可以存在其他類別的消息?

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; 
    } 
} 
+2

也許只是讓三個獨立的'enum'類型,但讓他們實現一個通用的界面。 – MatrixFrog

回答

0

您可以使用包?

例如:

com.foo.messages 

是你的基本包。然後你可以從

com.foo.messages.site 
com.foo.messages.admin 

等等......擴大

0

你可以做Message聲明枚舉SiteAdmin的接口。但是,當然,你不能傳遞一個Message對象,並期望一個枚舉,只是一個Message.<something>對象。

你想要做什麼?

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; } 
    } 
} 

我想你可以擺脫與公共基類的重複的代碼,但我的記憶是在延長枚舉,這樣可不行模糊......

+0

這可以工作,但我不希望看到如果每個枚舉有100多個條目,你將如何管理它=) – Dorpsidioot

相關問題