D'abord, je vais dire que je suis beaucoup plus familier avec les enums en C# et il semble que les enums en java soient un désordre.Java: utilisation de l'instruction switch avec enum sous-classe
Comme vous pouvez le voir, j'essaie d'utiliser une instruction switch @ enums dans mon exemple suivant, mais je reçois toujours une erreur, peu importe ce que je fais.
L'erreur que je reçois est:
L'étiquette cas qualifié
SomeClass.AnotherClass.MyEnum.VALUE_A
doit être remplacé par des personnes non qualifiées ENUM constanteVALUE_A
La chose est que je tout à fait comprendre l'erreur mais je ne peut pas écrire simplement VALUE_A puisque l'enum est situé dans une autre sous-classe. Y a-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;
}
}
}
}
Comme darrengorman a commenté, Java [ 'Enum'] (http://docs.oracle.com/javase/8/ docs/api/java/lang/Enum.html) sont * extrêmement * pratiques une fois que vous avez compris - pas du tout un gâchis. Ils sont beaucoup plus flexibles et pratiques que de simples enums (simplement une valeur entière étiquetée) comme on le voit sur d'autres plateformes. Voir le [Oracle Tutorial] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html). Découvrez les implémentations 'Set' /' Map' optimisées: ['EnumSet'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html) & [' EnumMap'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html). –
Lorsque vous essayez de qualifier l'instruction case; D'une certaine manière, vous essayez de dire que je peux mélanger différents types d'énumérations (et pas seulement le même type enum) dans une seule instruction switch. Java l'a arrêté avec cette approche comme discuté ici http://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html – lkamal