java - 如何在 Java 枚举中定义静态常量?

标签 java enums constants

有没有办法在 Java 枚举声明中定义静态最终变量(实际上是常量)?

我想要的是在一个地方定义 BAR(1...n) 值的字符串文字值:

@RequiredArgsConstructor
public enum MyEnum {
    BAR1(BAR_VALUE),
    FOO("Foo"),
    BAR2(BAR_VALUE),
    ...,
    BARn(BAR_VALUE);

    private static final String BAR_VALUE = "Bar";

    @Getter
    private final String value;
}

对于上面的代码,我收到以下错误消息:在定义之前无法引用字段

最佳答案

正如 IntelliJ IDEA 在提取常量时建议的那样 - 制作静态嵌套类。这种方法有效:

@RequiredArgsConstructor
public enum MyEnum {
    BAR1(Constants.BAR_VALUE),
    FOO("Foo"),
    BAR2(Constants.BAR_VALUE),
    ...,
    BARn(Constants.BAR_VALUE);



    @Getter
    private final String value;

    private static class Constants {
        public static final String BAR_VALUE = "BAR";
    }
}

关于java - 如何在 Java 枚举中定义静态常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608885/

相关文章:

c - Kconfig 和 C 枚举

c# - C# 7.3 处理通用枚举约束的可能错误

c++ - 将 const uint * 的值复制到 C++ 中的另一个变量

java - 如何在不多次扫描的情况下将文本匹配多种模式?

java - 无法引用内部类中的非最终变量,则出现 null 错误

xml - 处理 JAXB 枚举键名

c++ - 在 C++ 中将数组作为方法的 const 参数传递

java - 如何修复重复资源错误android studio

java - RxJava的clear(CompositeDisposable)方法内部是如何工作的?

c - Linux 内核,const 转换函数