首先我要声明的是,我对 C# 中的枚举更加熟悉,而 Java 中的枚举似乎是一团糟。
如您所见,我尝试在下一个示例中使用 switch 语句 @ enums,但无论我在做什么,我总是会收到错误。
我收到的错误是:
The qualified case label
SomeClass.AnotherClass.MyEnum.VALUE_A
must be replaced with the unqualified enum constantVALUE_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;
}
}
}
}
最佳答案
改成这样:
switch (enumExample) {
case VALUE_A: {
//..
break;
}
}
线索在错误中。您不需要使用枚举类型来限定 case
标签,只需使用它的值即可。
关于Java:在子类下使用带有枚举的switch语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161408/