Me encontré con este problema que, sin saber el enum
tipo real , necesito iterar sus posibles valores.
if (value instanceof Enum){
Enum enumValue = (Enum)value;
}
¿Alguna idea de cómo extraer de enumValue sus posibles valores?
Object[] possibleValues = enumValue.getDeclaringClass().getEnumConstants();
getClass()
en unenum
objeto puede devolver un subtipo delenum
tipo en sí (si, digamos, laenum
constante anula un método delenum
tipo).getDeclaringClass()
devuelve elenum
tipo que declaró esa constante, que es lo que desea aquí.O
fuente
YourEnumClass[] yourEnums = YourEnumClass.class.getEnumConstants();
resolvió mi problema de llamar desde un método no estático.Enum
s son comoClass
es en que se escriben. Su código actual simplemente verifica si es un Enum sin especificar de qué tipo de Enum es parte.Debido a que no ha especificado el tipo de enumeración, tendrá que usar la reflexión para averiguar cuál es la lista de valores de enumeración.
Puedes hacerlo así:
Esto devolverá una matriz de objetos Enum, cada uno de los cuales será una de las opciones disponibles.
fuente
método de valores de enumeración
enum.values () método que devuelve todas las instancias de enumeración.
http://javaexplorer03.blogspot.in/2015/10/name-and-values-method-of-enum.html
fuente
... o MyEnum.values ()? ¿O me estoy perdiendo algo?
fuente
Aquí, Role es una enumeración que contiene los siguientes valores [ADMIN, USER, OTHER].
fuente
También se puede usar java.util.EnumSet así
fuente