首先,我要说的是,我对C#中的枚举更加熟悉,而Java中的枚举似乎相当混乱。
如您所见,我在下一个示例中尝试使用switch语句@枚举,但是无论我在做什么,我总是会收到错误消息。
我收到的错误是:
合格的案例标签
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;
}
}
}
}
当您试图使案例陈述合格时;在某种程度上,您试图说我可以在单个switch语句中混合使用不同类型的枚举(不只是相同的枚举类型)。Java已使用此方法停止了此操作,如此处所述digizol.com/2010/10/enum-case-label-switch-java-qualified.html
—
lkamal
这是我在IntelliJ 2018.2中重构(移动)类时发生的事情
—
Daniel Alder
Enum
它们就非常方便-一点也不乱。与在其他平台上看到的简单枚举(仅是标记的整数值)相比,它们更具灵活性和实用性。请参阅《Oracle教程》。探索优化的Set
/Map
实施:EnumSet
&EnumMap
。