я должен работать с библиотекой, которая определяет перечисление, как это:Почему Java запрещает использование статических enums?
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
я получаю это перечисление в качестве аргумента метода:
public void libCallback(LibVal val){
//.... some implementation
}
Почему Java запретить использование switch
с LibVal
enum внутри метода libCallback
? Однако, если lib объявила, что его перечисление нестационарно, оно будет работать. Это сбивает с толку, как этого SO-answer государств, что нет действительно никакой разницы ...
Edit:
Как bobkilla Заявлено: Я пытался LibVal.VAL_1 внутри моего выключателя, который должен быть разрешен. Я предоставляю код-образец, который не сработает!
class TestClassForEnum {
public static enum TestEnum{ ONE, TWO; }
}
class WhichUsesEnumInsideMethod{
//completely unrelated to TestClassForEnum.TestEnum!!!
public static final int ONE = 0x1282
void doSomethingWithEnum(TestEnum e){
//here I cannot switch:
//FORBIDDEN BY JAVA
switch (e) {
case TestEnum.ONE:
//...
}
//Cannot USE EITHER, because ONE is a static final int inside this scope?!:
switch (e) {
case ONE:
//...
}
}
показать, как вы пытаетесь 'switch' , – jlordo
Что такое ошибка компиляции? – NINCOMPOOP
Это не запрещает. Никаких доказательств. Не настоящий вопрос. – EJP