繁体   English   中英

为什么必须在枚举类型中的任何其他变量和方法声明之前声明枚举常量?

[英]Why the enum constants must be declared before any other variables and methods declaration in an enum type?

如果我在以这种方式声明枚举常量之前或之前声明变量:

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是这样设计的?

; 表示枚举标识符列表的结尾。 显然你可以有一个空的枚举列表,但你必须有一个。

请参阅Java语言规范的 8.9.1

8.9.1枚举常量
枚举类型的主体可能包含枚举常量

枚举的两个必要部分是:

  1. 枚举标识符;
  2. 枚举身体。

您必须首先在枚举主体之前声明枚举标识符列表。 在这里, ; 正在展示第一部分,因为第一部分是强制性的。 如果忽略它,将产生编译错误。 如果你添加; 然后它将在您满足两个标准时进行编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM