如果我以这种方式声明枚举常量之前或之后声明变量:
enum MyEnum
{
int i = 90;
}
显示以下编译错误。
MyEnum.java:3: <identifier> expected
{
^
MyEnum.java:4: ',', '}', or ';' expected
int i = 90;
^
MyEnum.java:4: '}' expected
int i = 90;
^
MyEnum.java:5: class, interface, or enum expected
}
^
4 errors
但是如果我在声明i
之前声明一个枚举常量,那么它编译得很好。
即使以下代码也可以正常编译:
enum MyEnum
{
;//put a semicolon
int i = 90;
}
为什么java enum是以这种方式设计的?
答案 0 :(得分:10)
;
表示枚举标识符列表的结尾。显然你可以有一个空的枚举列表,但你必须有一个。
请参阅8.9.1的Java Language Specification:
8.9.1枚举常数
枚举类型的主体可能包含枚举常量
答案 1 :(得分:2)
枚举的两个必要部分是:
您必须先在枚举主体之前声明枚举标识符列表。
这里,;
显示第一部分,因为第一部分是强制性的。如果忽略它,将产生编译错误。如果您添加;
,那么当您同时符合时,它会进行编译。