私は前に、または、このように列挙型定数を宣言せずに変数を宣言する場合:enum型で他の変数やメソッドの宣言よりも前にenum定数を宣言する必要があるのはなぜですか?
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
を宣言する前に列挙型定数を宣言した場合、それは罰金コンパイルします。
さえ、次のコードは罰金コンパイルします:Javaの列挙がこのように設計されたのはなぜ
enum MyEnum
{
;//put a semicolon
int i = 90;
}
?
まず最初に、 'enum'はゼロ以上の要素の*列挙*になるように設計されています。このデザインは完全に有効です。 –
少なくとも1つの列挙定数を持つことが必須であるためです。これが構文がJava言語仕様で定義されている方法です。なぜなら。 – EJP
@EJPしかし、後のケースでは、私は定数を宣言していませんが、変数を宣言する前にセミコロンを追加するだけです。 'Enum'は少なくとも一つのenum定数を持つべきであるという命令に反していませんか? –