在枚举中声明常量

时间:2014-05-13 07:03:26

标签: java enums constants

我想创建一个枚举并在其中声明几个常量以供内部使用...

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

}

所以我想知道是否有更好的方法呢?

1 个答案:

答案 0 :(得分:8)

我也会为enum使用Categories。如果将它放在顶级课程中,它看起来很自然。

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

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

相关问题