2014-05-13 217 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

謝謝!它甚至可以作爲嵌套枚舉(至少編譯) –