Во-первых, я скажу, что я гораздо лучше знаком с перечислениями в C #, и кажется, что перечисления в Java - довольно беспорядок.
Как вы можете видеть, я пытаюсь использовать оператор switch @ enums в моем следующем примере, но я всегда получаю ошибку, независимо от того, что я делаю.
Я получаю ошибку:
Квалифицированная метка регистра
SomeClass.AnotherClass.MyEnum.VALUE_A
должна быть заменена неквалифицированной константой enumVALUE_A
Дело в том , я совсем понимаю ошибку , но я не могу просто написать VALUE_A , так как перечисление находится в другом подклассе. Есть ли способ решить эту проблему? И почему это происходит на 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
являются чрезвычайно удобно , как только вы получите повесить их - вовсе не беспорядок. Они гораздо более гибкие и практичные, чем простые перечисления (просто помеченные целочисленные значения), как это видно на других платформах. Смотрите руководство по Oracle . Откройте для себя оптимизированныеSet
/Map
реализации:EnumSet
&EnumMap
.