我有这个带参数化接口的代码:
public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> {
@Override
public ReaderType getType() {
return ReaderType.CLI;
}
为什么IDE期望&#34 ;;&#34;在返回getType()的Type(ReaderType)之后?
IDE放置了&#34 ;;&#34;在课程开始之后:
public enum CLIError implements IUIErrorEnum<CLIError>, IErrorEnum<CLIError> {
;
@Override
为什么IDE(在本例中为Eclipse)生成&#34 ;;&#34;在Enum声明之后并显示&#34;期望&#34 ;;&#34;在返回类型之后而不是&#34;缺少成员&#34;?
答案 0 :(得分:2)
您正在声明一个枚举,而不是一个类,因此编译器希望在开头看到枚举元素。这些元素应以,
分隔,并以;
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 ;
}
答案 1 :(得分:1)
您定义了enum
。在enum
中,您必须在定义任何方法之前定义枚举常量。如果你没有定义任何常量,你必须在那里放一个分号。
这就是如何为Java定义枚举的语法,请参阅Java语言规范的section 8.9。