Per prima cosa affermerò che ho molta più familiarità con le enumerazioni in C # e sembra che le enumerazioni in Java siano un bel casino.
Come puoi vedere, sto cercando di usare un'istruzione switch @ enums nel mio prossimo esempio, ma ricevo sempre un errore, qualunque cosa stia facendo.
L'errore che ricevo è:
L'etichetta del caso qualificato
SomeClass.AnotherClass.MyEnum.VALUE_A
deve essere sostituita con la costante enum non qualificataVALUE_A
Il fatto è che capisco perfettamente l'errore ma non posso 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;
}
}
}
}
Enum
è estremamente utile una volta capito, non è affatto un disastro. Sono molto più flessibili e pratici dei semplici enum (semplicemente un valore intero etichettato) visto su altre piattaforme. Vedi il tutorial Oracle . Scopri le ottimizzazioniSet
/Map
implementazioni:EnumSet
&EnumMap
.