2010-08-03 13 views

Respuesta

8

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

+2

+1; ¡Esta es la mejor respuesta! – polygenelubricants

2

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 
4

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 
+0

No puedo usarlo sin acceso a alfabeto. Digamos que hay Class cls = Alphabet.class y solo funcionan con cls. –

+0

@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

+0

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í. –

Cuestiones relacionadas