Najpierw stwierdzę, że znacznie lepiej znam wyliczenia w języku C # i wygląda na to, że wyliczenia w języku Java są dość nieporządne.
Jak widać, próbuję użyć instrukcji switch @ enums w następnym przykładzie, ale zawsze otrzymuję błąd bez względu na to, co robię.
Błąd, który otrzymuję to:
Etykietę kwalifikowanego przypadku
SomeClass.AnotherClass.MyEnum.VALUE_A
należy zastąpić niekwalifikowaną stałą wyliczaniaVALUE_A
Chodzi o to, że całkiem rozumiem błąd, ale nie mogę po prostu napisać WARTOŚCI_A, ponieważ wyliczenie znajduje się w innej podklasie. Czy istnieje sposób na rozwiązanie tego problemu? I dlaczego tak się dzieje w Javie?
//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
jest bardzo przydatna, gdy się ich zrozumie - wcale nie jest bałagan. Są one znacznie bardziej elastyczne i praktyczne niż proste wyliczenia (tylko wartość oznaczona liczbą całkowitą), jak widać na innych platformach. Zobacz samouczek Oracle . Odkryj zoptymalizowaneSet
/Map
wdrożenia:EnumSet
iEnumMap
.