以下枚举声明有什么问题?我想写一个单例枚举,所以声明INSTANCE
。
我收到错误 - "misplaced construct(s)"
public enum demo {
INSTANCE;
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);
private int code;
private demo(int c) {
code = c;
}
private demo() { }
public int getCode() {
return code;
}
}
答案 0 :(得分:3)
为了进行编译,只需将;
替换为,
,因为您尚未完成常量列表。
这样的事情:
INSTANCE,
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);
但是,由于你想拥有一个单例,我建议删除INSTANCE
值,并引入一个将保存该实例的static
成员:
public static Demo INSTANCE = Demo.WHITE;
答案 1 :(得分:3)
您不能像以前那样在一个enum
课程中声明两组实例。
目前尚不清楚为什么要枚举enum的枚举单词,但如果你想让一个INSTANCE
成为单身,那么你可以将static
变量声明为其中一个实例
enum Demo {
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);
public static Demo INSTANCE = WHITE;
// rest unchanged except for demo->Demo
}
可以使用枚举单例模式:
enum DemoSingleton
{
INSTANCE(Demo.WHITE);
private Demo myDemo;
private DemoSingleton(Demo demo) { myDemo = demo; }
}
但那没用;你可以使用Demo.WHITE
。