2010-06-25 26 views
7

Tengo el siguiente código y ahora tengo el tipo, pero necesito tener algún tipo de cambio para saber si el tipo es, por ejemplo, de Cadena y luego manejar las cadenas. Entonces, ¿cómo puedo verificar si Type t es el tipo de String?¿Cómo puedo comparar tipos en Java con reflexión?

Type t = bean.getClass().getDeclaredField(fieldName).getType(); 

Respuesta

10

¿Desea hacer una verificación de nombre o un control basado en objeto?

Desde Class implementa Type, en realidad se puede ir directamente y hacer los iguales contra String.class Por ejemplo: si (t.equals (String.class))

Si, sin embargo, que quieren hacer una comprobación basada en el nombre, primero verifique si t es una instancia de Class, y luego vuélvala a Class, obtenga el nombre completo del tipo y compare.

+1

En realidad 'Field.getType()' devuelve 'Clase ' por lo que está seguro de ir por este camino. – laura

+0

Huh ... Eso es interesante. Debería haber mirado los JavaDocs. ¿Qué hace en la causa de los primitivos? – Uri

+2

Los primitivos, aunque en realidad no son clases, tienen un objeto Class asociado a ellos. 'Clase i = int.class;' – ILMTitan

Cuestiones relacionadas