Gdybym zadeklarować zmienną przed lub bez deklarowania stałych enum w ten sposób:Dlaczego stałe enum muszą być zadeklarowane przed innymi zmiennymi i deklaracjami metod w typie wyliczeniowym?
enum MyEnum
{
int i = 90;
}
pokazuje następujący błąd kompilacji.
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
Ale jeśli zadeklarować stałą enum przed oświadczając i
następnie kompiluje grzywny.
Nawet następujący kod zostanie skompilowany grzywny:
enum MyEnum
{
;//put a semicolon
int i = 90;
}
Dlaczego java enum jest zaprojektowany w ten sposób?
Przede wszystkim "wyliczenie" ma na celu * wyliczenie * więcej niż zero elementów. Ten wzór jest całkowicie poprawny. –
Ponieważ obowiązkowe jest posiadanie co najmniej jednej stałej wyliczeniowej. Ponieważ w ten sposób składnia jest zdefiniowana w specyfikacji języka Java. Bo. – EJP
@EJP Ale w późniejszym przypadku nie zadeklarowałem żadnej stałej wyliczeniowej, ale po prostu dodałem średnik przed zadeklarowaniem zmiennej. Czy nie jest sprzeczne z mandatem, że "Enum" powinien mieć co najmniej jedną stałą enum? –