2009-06-09 10 views
11

¿Es posible obtener los valores de enumeración de una clase? Déjame elaborar esto un poco. Si tengo una enumeración, por ejemplo FooBar, entonces puedo obtener los valores de FooBar llamando a FooBar.values ​​() que devolverá una matriz con las enumeraciones (FooBar []). Mi problema es que tengo un método que toma como parámetro de entrada una clase (Clase c) y dentro del método verifico si es o no una enumeración (c.isEnum()). Si es una enumeración, necesitaría de alguna manera obtener los valores enum, el problema es que no sé muy bien cómo hacerlo, ni siquiera estoy totalmente seguro de que sea posible. Entonces, ¿es posible y si lo es, cómo puedo lograr esto? (Tenga en cuenta que la solución debe ser genérica, es decir, no if-else).Obtener valores de enumeración de la clase

Respuesta

22

Um ... ¿has mirado el doc API?

Class.getEnumConstants()

+1

Sí, un par de veces y de alguna manera solo me faltaba ese método o_O –

+1

Solo para agregar un ejemplo de cómo usarlo: http://java.sun.com/docs/books/tutorial/reflect/special/ enumMembers.html – Kosi2801

0

Editado:. Puede utilizar c.getClass() getEnumConstants() para obtener los valores de las constantes

(es decir 'nombres' en lugar de 'valores' y ha añadido algunas cosas innecesarias)

+0

Incorrecto. getEnumConstants() devuelve los valores, no los nombres, e incluso se escriben a través de genéricos si el objeto de la clase es, aunque eso probablemente no se aplique en este caso. –

+0

Ah, pensé que acababa de probar eso, pero hay un error en mi rápida prueba sucia; Lo siento por eso. – Confusion

Cuestiones relacionadas