【发布时间】:2012-04-27 00:46:29
【问题描述】:
首先我要声明的是,我对 C# 中的枚举更加熟悉,而 Java 中的枚举似乎是一团糟。
如您所见,我尝试在下一个示例中使用 switch 语句 @ enums,但无论我在做什么,我总是会收到错误。
我收到的错误是:
合格的案例标签
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;
}
}
}
}
【问题讨论】:
-
正如 darrengorman 评论的那样,Java
Enum一旦你掌握了它们,就会非常方便地使用它们——一点也不乱。它们比在其他平台上看到的简单枚举(仅仅是一个标记的整数值)更加灵活和实用。请参阅Oracle Tutorial。发现优化的Set/Map实现:EnumSet&EnumMap。 -
当您尝试限定案例陈述时;在某种程度上,您试图说我可以在单个 switch 语句中混合不同类型的枚举(不仅仅是相同的枚举类型)。 Java 已经用这种方法阻止了它,正如这里所讨论的 digizol.com/2010/10/enum-case-label-switch-java-qualified.html
-
在 IntelliJ 2018.2 中重构(移动)一个类时发生在我身上
标签: java enums switch-statement