Tengo una interface
y unaenum
Me estoy poniendo en práctica el interface
en elenum
Estoy usando eclipse
como mi IDE
Lo que sigue es mi interface
archivo -
ITrafficSignal.java
->
public interface ITrafficSignal {
public void showAction();
}
Lo que sigue es mi enum
archivo -
ETrafficSignal.java
->
public enum ETrafficSignal implements ITrafficSignal {
;
@Override
public void showAction() {
}
}
Aquí la ;
línea 2 está siendo automáticamente de ser puesto poreclipse
Si quito ;
, a continuación, en el method
bienestar implemented
-
public void showAction()
es tener una línea roja debajo de la keyword
void
y dice que el error -
Multiple markers at this line
- implements ITrafficSignal.showAction
- Syntax error on token "void", volatile expected
Soy incapaz de entender esto.
Eso es simplemente la sintaxis de los tipos de enumeración. De §8.9 Enum Tipos de la especificación del lenguaje Java :
EnumDeclaration: {ClassModifier} enum TypeIdentifier [Superinterfaces] EnumBody
Y la sintaxis de EnumBody
es:
EnumBody: { [EnumConstantList] [,] [EnumBodyDeclarations] } EnumConstantList: EnumConstant {, EnumConstant} EnumConstant: {EnumConstantModifier} Identifier [( [ArgumentList] )] [ClassBody] EnumConstantModifier: Annotation
Y, finalmente, la sintaxis de EnumBodyDeclarations
es:
EnumBodyDeclarations: ; {ClassBodyDeclaration}
Como se puede ver, Lo anterior muestra que las declaraciones del cuerpo enum deben estar precedidos por un punto y coma ( ;
) que lo separa de las constantes de enumeración. A diferencia de la EnumConstantList
del punto y coma no es opcional 1 . Esto significa que el punto y coma deben estar presentes si hay declaraciones de enumeración del cuerpo, independientemente de que exista cualquier constante de enumeración declarados, aunque yo personalmente no veo el punto de tener un tipo de enumeración sin constantes.
1. La totalidad EnumBodyDeclarations
es opcional, sin embargo, es decir, si no hay declaraciones cuerpo, entonces, el punto y coma puede ser omitida.