Digamos que tenemos un objeto Class
. Llámalo cls
.Lista de valores de enumeración desconocida
Ahora vuelve cls.isEnum()
true
Qué alegría !!! ¿Podría por favor tener los valores enumerados para mí? (Un azúcar, sin leche)
Digamos que tenemos un objeto Class
. Llámalo cls
.Lista de valores de enumeración desconocida
Ahora vuelve cls.isEnum()
true
Qué alegría !!! ¿Podría por favor tener los valores enumerados para mí? (Un azúcar, sin leche)
getEnumConstants() un método de la clase de objeto devuelve una matriz de objetos
public static enum E {
A, B, C, D;
}
public static void main(String[] args) {
Class c = E.class;
for(Object b:c.getEnumConstants())
{
System.out.println(b);
}
}
Lienzo:
A
B
C
D
Los siguientes principales:
GetEnumFields públicas de clase {
public static enum Enum {
A, B, C, D;
}
public static void main(String[] args) {
Enum a = Enum.A;
Field[] declaredFields = a.getClass().getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
System.out.println(declaredFields[i]);
}
}
}
grabados:
public static final GetEnumFields$Enum GetEnumFields$Enum.A
public static final GetEnumFields$Enum GetEnumFields$Enum.B
public static final GetEnumFields$Enum GetEnumFields$Enum.C
public static final GetEnumFields$Enum GetEnumFields$Enum.D
private static final GetEnumFields$Enum[] GetEnumFields$Enum.ENUM$VALUES
Puede utilizar EnumSet.allOf(Class<E>)
, donde <E extends Enum<E>>
dado:
public static enum Alphabet {
A, B, C, D;
}
puede escribir:
for (Enum<?> e : EnumSet.allOf(Alphabet.class)) {
System.out.println(e);
}
// A, B, C, D
No puedo usarlo sin acceso a alfabeto. Digamos que hay Class cls = Alphabet.class y solo funcionan con cls. –
@Joel: eludir la verificación de tipo genérico es complicado (no creo que haya una manera segura de hacerlo si comienzas con una 'Clase >'), pero no estoy seguro de lo que estás diciendo. Esto definitivamente funciona, pero 'Class.getEnumConstants()' es lo mejor. – polygenelubricants
Gracias por su respuesta. Lo miré, aprendí de él y lo marqué útil. Como sugieres, acepté la respuesta getEnumConstants(). La razón principal de esto es que no requiere nada más que el objeto de clase en sí. –
+1; ¡Esta es la mejor respuesta! – polygenelubricants