Java IDE要求在大括号后加分号

Java IDE要求在大括号后加分号,java,parameters,interface,Java,Parameters,Interface,我有以下带有参数化接口的代码: public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> { @Override public ReaderType getType() { return ReaderType.CLI; } 为什么IDE期望;在返回类型ReaderType的getType之后 IDE放置了一个;在类的开头括号之后: pu

我有以下带有参数化接口的代码:

public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> {
    @Override
    public ReaderType getType() {
        return ReaderType.CLI;
    }
为什么IDE期望;在返回类型ReaderType的getType之后

IDE放置了一个;在类的开头括号之后:

public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> {
;
    @Override

为什么IDEEclipse在这种情况下会生成;在枚举声明后,显示预期的值;在返回类型之后,而不是在缺少成员之后?

您正在声明一个枚举,而不是一个类,因此编译器希望在开始时看到枚举元素。这些元素应以分隔,并以a结尾

您定义了一个枚举。在枚举中,必须先定义枚举常量,然后才能定义任何方法。如果你没有定义任何常数,你必须在那里放一个分号


这正是为Java定义枚举语法的方式,请参阅Java语言规范的第页。

但是为什么会出现错误;在类型之后?我知道这是一个枚举,我知道错误标记会消失。但为什么会出现这种模糊的错误呢?为什么是自动生成的@吉斯莫;不应在类型之后,而应在第一个方法之前。这允许编译器区分枚举元素和方法。
public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> {
    ELEMENT_1,
    ELEMENT_2,
    LAST_ELEMENT;

    @Override
    public ReaderType getType() {
        return ReaderType.CLI;
    }
}
public enum CLIError {
    // compiles without ;
}
public enum CLIError {
    ELEMENT_1,
    ELEMENT_2,
    LAST_ELEMENT
    // compiles without ;
}