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

标签 java enums switch-statement

首先我要声明的是,我对 C# 中的枚举更加熟悉,而 Java 中的枚举似乎是一团糟。

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

我收到的错误是:

The qualified case label SomeClass.AnotherClass.MyEnum.VALUE_A must be replaced with the unqualified enum constant 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 标签,只需使用它的值即可。

关于Java:在子类下使用带有枚举的switch语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161408/

相关文章:

使用 Java 9 在 Linux 上创建模块化 jar 时出现 java.nio.file.NoSuchFileException

java - “int cannot be dereferenced”错误位于k = PIE.gcd(e1)

java - 如何从循环内的 switch 语句继续到下一个循环?

java - Android - OpenGL ES 2.0 : Emulator (Works) - Device (Doesn't)

java - 为什么Java中的字节范围是-128到127?

grails - grails中的枚举-将枚举值持久化到域类

c++ - 枚举类型布局是否与其基础类型兼容?

javac 提示 : cannot find symbol on enum implementing interface

java - 开关盒卡类

c++ - "crosses initialization of variable"仅当初始化结合声明时