2012-01-23 18 views
21

Quiero comprobar si una instancia java.lang.reflect.Type representa un objeto Emum o no.cómo comprobar si java.lang.reflect.Type es una enumeración

puedo comprobar si se trata de una instancia de una clase específica utilizando == comparaciones, por ejemplo:

type == String.class // works 

pero esto no parece funcionar para la clase de enumeración:

type == Enum.class // doesn't work 

.. Esto tiene sentido ya que la instancia sería de una enumeración específica, pero me gustaría comprobar si el tipo es para cualquier enumeración o no.

Podría alguien explicar lo que es obvio para mí de cómo saber si el tipo es una enumeración o no complacer

+3

lo que está mal con Class.isEnum()? – aviad

+0

Estoy usando Type object ya que admite tipos primitivos. Me gustaría ser capaz de llamar a isEnum(), pero no es el tipo de objeto – Edd

+0

no alcanza a comprender su comentario. Clase implementa Tipo. – aviad

Respuesta

30
if(type instanceof Class && ((Class<?>)type).isEnum()) 
+1

Gracias, sabía que sería algo obvio – Edd

7

Class.isEnum() lo hará por ti.

Consulte Oracle Doc

+0

podría ser más específico por favor sobre cómo implementar esta – Edd

+0

que se traduciría en 'type.isEnum()' de su ejemplo. – towi

1

¿Por qué no usar .equals método para comparar este tipo de comparaciones. == se usa principalmente para tipos primitivos.

type.equals(Enum.class) 

o tal vez tendrá que comparar sus propias clases.

type.equals(MyClass.class) 
+0

es igual a no parece método para trabajar con Enum.class – Edd

+0

Creo que la segunda sugerencia sería trabajar pero necesito que funcione con cualquier enumeración ... no sólo las definidas explícitamente – Edd

0
if(type instanceof Class && (Class)type.getClass().isEnum()) {...} 
+0

type.getClass() devuelve 'clase' y no mi enumeración – Edd

+0

intento elenco de Clase – aviad

+0

ah sí ... estoy @jtahlborn miedo sugirió esto ya. Gracias por sus esfuerzos, aunque – Edd

Cuestiones relacionadas