首先,我将说明我对C#中的枚举更加熟悉,看起来java中的枚举非常混乱 .
正如您所看到的,我正在尝试在下一个示例中使用switch语句@enums,但无论我在做什么,我总是会收到错误 .
The error I receive is:
必须使用非限定枚举常量VALUE_A替换限定案例标签SomeClass.AnotherClass.MyEnum.VALUE_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;
}
}
}
}
5 回答
把它改成这个:
线索出现错误 . 您不需要使用枚举类型限定
case
标签,只需要使用其值 .Java会自动推断
case
中元素的类型,因此标签必须是不合格的 .这应该做:
以这种方式写
someMethod()
:在switch语句中,您必须仅使用常量名称 .
这就是我使用它的方式 . 它的工作非常出色 -
而
switch-case
如下图所示