我必须使用一个定义这样的枚举的库:
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
我将此枚举作为方法参数:
public void libCallback(LibVal val){
//.... some implementation
}
为什么 Java 不允许在方法中使用switch
withLibVal
枚举libCallback
?但是,如果 lib 已将其枚举声明为非静态,它将起作用。这很令人困惑,因为这个SO-answer指出,真的没有区别......
编辑:
正如 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:
//...
}
}