首先,我要声明我对 C# 中的枚举更加熟悉,而且似乎 java 中的枚举非常混乱。
如您所见,我尝试在下一个示例中使用 switch 语句 @ enums,但无论我在做什么,我总是会收到错误消息。
我收到的错误是:
合格的 case 标签SomeClass.AnotherClass.MyEnum.VALUE_A必须替换为不合格的枚举常量VALUE_A
SomeClass.AnotherClass.MyEnum.VALUE_A
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; } } } }
将其更改为:
switch (enumExample) { case VALUE_A: { //.. break; } }
线索在错误中。您不需要case使用枚举类型来限定标签,只需使用它的值即可。
case