Primero, declararé que estoy mucho más familiarizado con las enumeraciones en C# y parece que enums en java es un desastre.Java: usando la instrucción switch con enum bajo la subclase
Como puede ver, estoy tratando de usar una instrucción switch @ enums en mi próximo ejemplo pero siempre obtengo un error sin importar lo que esté haciendo.
El error que recibo es:
El caso cualificado etiqueta
SomeClass.AnotherClass.MyEnum.VALUE_A
debe ser reemplazado con la constante de enumeración no calificadoVALUE_A
la cosa es que bastante entiendo el error pero no puede simplemente escribir el VALOR_A dado que la enumeración está ubicada en otra subclase. ¿Hay alguna manera de resolver este problema? ¿Y por qué está sucediendo en 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;
}
}
}
}
Como darrengorman comentado, Java [ 'Enum'] (http://docs.oracle.com/javase/8/ docs/api/java/lang/Enum.html) son * extremadamente * útiles una vez que les agarras el truco, nada desordenados. Son mucho más flexibles y prácticos que las enumeraciones simples (simplemente un valor entero etiquetado) como se ve en otras plataformas. Consulte el [Tutorial de Oracle] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html). Descubra las implementaciones optimizadas 'Set' /' Map': ['EnumSet'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html) y [' EnumMap'] (http://docs.oracle.com/javase/8/docs/api/java/util/EnumMap.html). –
Cuando intenta calificar la declaración de caso; de alguna manera, estás tratando de decir que puedo mezclar diferentes tipos de enumeraciones (no solo el mismo tipo de enumeración) dentro de una sola instrucción de cambio. Java lo ha detenido con este enfoque como se discute aquí http://www.digizol.com/2010/10/enum-case-label-switch-java-qualified.html – lkamal