枚举 java 错位构造错误

enum java misplaced constructs error

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

为了编译它,只需将 ; 替换为 ,,因为您还没有完成列出常量。

像这样:

INSTANCE,
WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);

但是,既然你想要一个单例,我建议去掉 INSTANCE 值,并引入一个 static 成员来保存实例:

public static Demo INSTANCE = Demo.WHITE;

您不能像您所做的那样在一个 enum class 中声明两组实例。

不清楚为什么你想要一个枚举的枚举单例,但是如果你想要一个 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.