java - 在枚举中声明常量

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

}

不幸的是,它不能以这种方式完成。到目前为止,我提出的最佳解决方案是声明一个嵌套接口(interface)来存储常量...

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

}

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

最佳答案

我也会为类别 使用枚举。如果你把它放在顶级类中,它看起来会很自然。

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

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

关于java - 在枚举中声明常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23624686/

相关文章:

java - 简单的Android程序上传到互联网

enums - 类似结构的枚举可以用作类型吗?

swift - 为什么我的枚举显示 "ErrorType"

java - 将基于 Maven 的依赖项的传递依赖项收集到非 Maven 项目的类路径

java - 在线程中使用静态变量作为不同实例之间的通信

c++ - 如何在 const 函数中调用非常量函数 (C++)

c++ - 使用 const 变量可以避免别名问题吗

perl - 由于模块被多次加载,常量子程序被重新定义;如何调试?

java - 无法遍历哈希集

mysql - 如何在 MySQL 过程中获取 ENUM 的值