Tout d'abord, je dirai que je suis beaucoup plus familier avec les énumérations en C # et il semble que les énumérations en java soient un vrai gâchis.
Comme vous pouvez le voir, j'essaie d'utiliser une instruction switch @ enums dans mon exemple suivant, mais j'obtiens toujours une erreur, quoi que je fasse.
L'erreur que je reçois est:
L'étiquette de boîtier qualifiée
SomeClass.AnotherClass.MyEnum.VALUE_A
doit être remplacée par la constante d'énumération non qualifiéeVALUE_A
Le fait est que je comprends bien l'erreur, mais je ne peux pas simplement écrire VALUE_A car l'énumération est située dans une autre sous-classe. Existe-t-il un moyen de résoudre ce problème? Et pourquoi cela se passe-t-il en Java?
//Main Class
public class SomeClass {
//Sub-Class
public static class AnotherClass {
public enum MyEnum {
VALUE_A, VALUE_B
}
public MyEnum myEnum;
}
public void someMethod() {
MyEnum enumExample //...
switch (enumExample) {
case AnotherClass.MyEnum.VALUE_A: { <-- error on this line
//..
break;
}
}
}
}
Enum
est extrêmement pratique une fois que vous les maîtrisez - pas du tout un gâchis. Ils sont beaucoup plus flexibles et pratiques que les énumérations simples (simplement une valeur entière étiquetée) comme on le voit sur d'autres plates-formes. Voir le didacticiel Oracle . Découvrez les optimisationsSet
/Map
implémentations:EnumSet
&EnumMap
.