2014-05-13 166 views
8

我想创建一个枚举,并宣布它内部的几个常数内使用的内部...声明常量枚举

public enum SearchType { 

    static final String TEXT = "text"; 
    static final String BOOLEAN = "boolean"; 

    STARTS_WITH(TEXT), 
    ENDS_WITH(TEXT), 
    CONTAINS(BOOLEAN), 
    WILDCARD(TEXT), 
    REGEXP(TEXT), 
    RANGE(TEXT) 


    private String searchType; 

    private SearchType(String type) { 
     searchType = type; 
    } 

} 

不幸的是它不能做到这样。最好的解决办法,我拿出迄今是声明一个嵌套接口存储常量...

public enum SearchType { 

    STARTS_WITH(Categories.TEXT), 
    ENDS_WITH(Categories.TEXT), 
    CONTAINS(Categories.BOOLEAN), 
    WILDCARD(Categories.TEXT), 
    REGEXP(Categories.TEXT), 
    RANGE(Categories.TEXT) 


    interface Categories{ 
     static final String TEXT = "text"; 
     static final String BOOLEAN = "boolean"; 
    } 

    private String searchType; 

    private SearchType(String type) { 
     searchType = type; 
    } 

} 

所以我不知道是否有更好的方式来做到这一点?

回答

8

我也会使用enum作为Categories。如果你把它放在顶级课堂上,它看起来很自然。

您必须在任何其他常量之前定义您的enum值。

AFAIK这样做是为了简化语法。您首先使用特殊的简化语法,然后是您定义的常量。当你开始重写常量中的方法时,对此的需求会更加明显。

+0

谢谢!它甚至可以作为嵌套枚举(至少编译) –