在Java中使用用于switch case的枚举

时间:2014-04-02 20:06:57

标签: java spring java-ee enums

我正在实现一个简单的开关案例,它将打开一个Enum值。以下是代码

ScheduleType scheduleType = ScheduleType.valueOf(scheduleTypeString);

switch (scheduleType) {

       case ScheduleType.CRON_EXPRESSION: 
                    System.out.println("Cron");
                    break;
}

但我的IDE中出现以下错误:

The qualified case label ScheduleType.CRON_EXPRESSION must be replaced with the unqualified enum constant CRON_EXPRESSION

有人可以解释为什么我会收到此错误以及代码有什么问题。 我知道正确的方法是删除ClassName,但为什么我需要这样做呢? 因为通常在比较中我确实使用它,例如在equals和all中。 感谢

2 个答案:

答案 0 :(得分:6)

取消课程名称。 case ScheduleType.CRON_EXPRESSION:应该是case CRON_EXPRESSION:

或者换句话说,必须用非限定枚举常量CRON_EXPRESSION替换ScheduleType.CRON_EXPRESSION。

答案 1 :(得分:3)

迈克已经解释了部分原因。

我将尝试解释原因。

只有比较相同类型的枚举时,开关盒才有意义。 将E1类型的枚举与E2的枚举进行比较是没有意义的。

有一个bug被提出来请求此功能接触到这个。