Per prima cosa, dichiaro che sono molto più familiare con le enumerazioni in C# e sembra che enum in java sia un bel problema.Java: utilizzo dell'istruzione switch con enum nella sottoclasse
Come potete vedere, sto cercando di utilizzare un'istruzione switch @ enums nel mio prossimo esempio, ma ottengo sempre un errore, non importa quello che sto facendo.
L'errore che ricevo è:
Il caso qualificato etichetta
SomeClass.AnotherClass.MyEnum.VALUE_A
deve essere sostituito con l'enumerazione qualificato costanteVALUE_A
Il fatto è che abbastanza capito l'errore, ma ho non può semplicemente scrivere VALUE_A poiché l'enum si trova in un'altra sottoclasse. c'è un modo per risolvere questo problema? E perché sta succedendo in 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;
}
}
}
}
Come darrengorman commentato, Java [ 'Enum'] (http://docs.oracle.com/javase/8/ docs/api/java/lang/Enum.html) sono * estremamente * a portata di mano una volta capito il problema - non è affatto un disastro. Sono molto più flessibili e pratici di semplici enumerazioni (semplicemente un valore intero etichettato) viste su altre piattaforme. Vedere [Oracle Tutorial] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html). Scopri le implementazioni ottimizzate di 'Set' /' Map': ['EnumSet'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html) e [' EnumMap'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html). –
Quando si tenta di qualificare la dichiarazione del caso; in un certo senso, stai cercando di dire che posso mescolare diversi tipi di enumerazione (non solo lo stesso tipo di enum) all'interno di una singola istruzione switch. Java lo ha fermato con questo approccio come discusso qui http://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html – lkamal