如何在Java中声明Enum中的字段?

MyT*_*tle 2 java enums

我想在Enum中声明静态(或非静态)变量.我需要这个,因为我想将枚举值与一些字符串相关联.但我不想硬编码这个字符串.我想使用我的应用程序范围的类与String常量.即我想在enum声明内部写这样的,但有编译时错误:

public enum MyEnum {   
        private static final AppConstants CONSTANTS = AppConstants.getInstance();

        ONE(CONSTANTS.one()),
        TWO(CONSTANTS.two());
}
Run Code Online (Sandbox Code Playgroud)

我怎么能把一个领域放进去?

dac*_*cwe 5

这是限制之一,枚举值必须指定第一,但你总是可以指同一singelton在每一个实例...

enum MyEnum {

    ONE(Test.getInstance().one()),
    TWO(Test.getInstance().two());

    public final String val;

    MyEnum(String val) { this.val = val; }
}
Run Code Online (Sandbox Code Playgroud)

输出"hello"的示例:

public class Test {
    public static void main(String[] args) {
        System.out.println(MyEnum.ONE.val);
    }

    public String one() {
        return "hello";
    }
    public String two() {
        return "world" ;
    }

    static Test instance;
    public synchronized static Test getInstance() {
        if (instance == null)
            instance = new Test();
        return instance;
    }
}
Run Code Online (Sandbox Code Playgroud)