Reflection API (VI) – Tipos Genericos
1Los tipos genéricos fueron implementados como una transformación en tiempo de ejecución. Los tipos genéricos no permiten conocer en tiempo de ejecución el tipo con el que se ha parametrizado, es decir, en tiempo de ejecución no podemos distinguir si un atributo es Map
Mediante reflexión también seremos capaces de obtener en tiempo de ejecución información sobre tipos genéricos, tanto de atributos como parámetros devueltos por un método o parámetros pasados a un método.
Tipo Parámetro Atributos Genéricos
Para obtener el parámetro de un atributo de tipo genérico se utiliza el método Field.getGenericType().
Lo primero que hacemos es obtener el objeto Field asociado al atributo genérico. A continuación, obtenemos el tipo del atributo, el cual es de tipo Type (interfaz genérico para todos los tipos de Java). Este tipo es el genérico (java.util.List), mientras que nosotros queremos obtener el parámetro de la lista. Para poder obtenerlo, necesitamos hacer un cast de nuestro objeto Type a ParameterizedType (un subinterfaz específico de los tipos parametrizados). Por ultimo obtenemos un array de los tipos específicos mediante el método getActualTypeArguments().
Tipo Devuelto en un Método
Para conocer el parámetro del tipo que devuelve un método utilizaremos el método Method.getGenericReturnType().
Como se puede observar el código es similar al utilizado con los atributos, primero obtenemos el tipo del parámetro que deseamos obtener y a continuación obtenemos los parámetros.
Parámetros Genéricos de un Método
Para conocer el parámetro del tipo que devuelve un método utilizaremos el método Method.getGenericParameterTypes().
La única diferencia con los dos ejemplos vistos anteriormente es que la variable parameterTypes ahora se trata de un array de objetos Type, donde cada elemento de dicho array se corresponde con el tipo genérico del parámetro correspondiente en la función setListAmigos().

Información Bitacoras.com…
Valora en Bitacoras.com: Reflection API (VI) – Tipos Genericos Los tipos genéricos fueron implementados como una transformación en tiempo de ejecución. Los tipos genéricos no permiten conocer en tiempo de ejecución el tipo con el que se ha parametriz…..