【发布时间】:2013-05-13 11:39:09
【问题描述】:
我必须使用一个定义像这样的枚举的库:
public static enum LibVal {
VAL_1,
VAL_2,
VAL_3;
}
我将此枚举作为方法参数:
public void libCallback(LibVal val){
//.... some implementation
}
为什么Java 不允许在libCallback 方法中使用LibVal 枚举switch?但是,如果 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:
//...
}
}
【问题讨论】:
-
展示你如何尝试
switch。 -
什么是编译错误?
-
它并没有禁止它。没有提供任何证据。不是一个真正的问题。
-
@EJP 抱歉,我赶时间。我更新了我的问题以提供证据
标签: java static enums switch-statement