枚举java misplaced构造错误

时间:2015-03-19 20:29:32

标签: java enums

以下枚举声明有什么问题?我想写一个单例枚举,所以声明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;
  }
}

2 个答案:

答案 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