首先我會說我更熟悉C#中的枚舉,並且它看起來像java中的枚舉是相當混亂的。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評論,爪哇['Enum'](http://docs.oracle.com/javase/8/
和所述
switch-case
- 它是工作飛馳docs/api/java/lang/Enum.html)一旦得到它們的竅門,就非常方便 - 一點都不亂。與其他平臺上看到的簡單枚舉(僅僅是一個帶標籤的整數值)相比,它們更加靈活和實用。請參閱[Oracle教程](http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html)。發現優化的'Set' /'Map'實現:['EnumSet'](http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html)&['EnumMap'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html)。 – 2017-08-05 20:12:57當您嘗試限定案例聲明時;在某種程度上,您試圖說我可以在單個switch語句中混合不同類型的枚舉(不僅僅是相同的枚舉類型)。爪哇已經停止了這種方法,這裏討論http://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html – lkamal 2017-11-16 18:52:08