小编典典

Java:在子类下使用带有枚举的switch语句

all

首先,我要声明我对 C# 中的枚举更加熟悉,而且似乎 java 中的枚举非常混乱。

如您所见,我尝试在下一个示例中使用 switch 语句 @ enums,但无论我在做什么,我总是会收到错误消息。

我收到的错误是:

合格的 case 标签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;
            }
        }
    }
}

阅读 73

收藏
2022-03-31

共1个答案

小编典典

将其更改为:

switch (enumExample) {
    case VALUE_A: {
        //..
        break;
    }
}

线索在错误中。您不需要case使用枚举类型来限定标签,只需使用它的值即可。

2022-03-31