Спершу зазначу, що я набагато більше знайомий із перерахунками в C #, і здається, що перерахунки в Java - це зовсім безлад.
Як ви бачите, я намагаюсь у своєму наступному прикладі використовувати оператор переключення @ перераховує, але я завжди отримую помилку незалежно від того, що я роблю.
Я отримую помилку:
Кваліфіковану мітку регістру
SomeClass.AnotherClass.MyEnum.VALUE_A
необхідно замінити на некваліфіковану константу перерахункуVALUE_A
Справа в тому, що я цілком розумію помилку, але я не можу просто написати VALUE_A, оскільки перерахунок знаходиться в іншому підкласі. Чи є спосіб вирішити цю проблему? І чому це відбувається на Яві?
//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
.