Me encontré con este problema que, sin saber el enumtipo 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 unenumobjeto puede devolver un subtipo delenumtipo en sí (si, digamos, laenumconstante anula un método delenumtipo).getDeclaringClass()devuelve elenumtipo 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.Enums son comoClasses 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