我想在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)
我怎么能把一个领域放进去?
这是限制之一,枚举值必须指定第一,但你总是可以指同一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)