首先,我要说的是,我对C#中的枚举更为熟悉,而java中的枚举似乎相当混乱.

正如你所看到的,在我的下一个例子中,我试图使用switch语句@enums,但无论我做什么,我总是会得到一个错误.

The error I receive is:

合格 case 标签SomeClass.AnotherClass.MyEnum.VALUE_A必须替换为不合格枚举常量VALUE_A

问题是我quite理解错误,但我不能只写值_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相关问答推荐

伪类focus-in不适用于PFA中的选项卡

当一个链表中间有一个循环时,它的松散部分会发生什么?

将成为一个比较者.比较…在现代Java中,编译器会对`CompareTo`方法进行优化吗?

JDK22执行repackage of goal org. springframework. boot:spring—boot—maven—plugin:3.2.3:repackage failed:unsupported class file major version 66—>

Apache POI:使用反射获取zoom 级别

Java函数式编程中的双值单值映射

S的字符串表示是双重精确的吗?

Hibernate EmptyInterceptor可以工作,但不能拦截器

无法使用ApacheSpark依赖项构建JavaFX应用程序

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

如何仅使用键/ID的一部分(组合)高效地返回映射值?

我怎样才能让IntelliJ标记toString()的任何实现?

使用Jackson库反序列化json

为什么Collectors.toList()不能保证易变性

如何在Java springboot中从一个端点发送多个时间响应?

如何在不作为类出现的表上执行原生查询?

基于Java中mm/dd/yy格式的最近日期对数组列表进行排序

在具有Quarkus Panache的PostgreSQL中将JSON数据存储为JSONB时,会将其存储为转义字符串

Java泛型方法重载

Jackson YAML:支持锚点扩展/覆盖