Zuerst werde ich sagen, dass ich mit Enums in C # viel besser vertraut bin und es scheint, dass Enums in Java ein ziemliches Durcheinander sind.
Wie Sie sehen können, versuche ich in meinem nächsten Beispiel, eine switch-Anweisung @ enums zu verwenden, aber ich erhalte immer eine Fehlermeldung, egal was ich tue.
Der Fehler, den ich erhalte, ist:
Das qualifizierte Falletikett
SomeClass.AnotherClass.MyEnum.VALUE_A
muss durch die nicht qualifizierte Enum-Konstante ersetzt werdenVALUE_A
Die Sache ist, dass ich den Fehler ziemlich verstehe, aber ich kann nicht einfach VALUE_A schreiben, da sich die Aufzählung in einer anderen Unterklasse befindet. Gibt es eine Möglichkeit, dieses Problem zu lösen? Und warum passiert das in 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
ist äußerst praktisch , wenn man den Dreh von ihnen bekommen - nicht alle ein Chaos an. Sie sind viel flexibler und praktischer als einfache Aufzählungen (lediglich ein beschrifteter ganzzahliger Wert), wie sie auf anderen Plattformen zu sehen sind. Siehe das Oracle-Tutorial . Entdecken Sie die optimiertenSet
/Map
Implementierungen:EnumSet
&EnumMap
.