La mayor parte de la documentación relacionada con el manejo de borrado de tipos en Java asume que el caso de uso maneja un tipo como SomeType<ParamType>
. que estoy tratando de procesar el parámetro método para el siguiente método:Java: obtención de tipo interno en tipos parametrizados anidados (reflexión)
public void setOtherReferenceRanges(List<ReferenceRange<T>> referenceRanges)
Cuando la clase de contenedor se crea una instancia de un tipo DvQuantity, esta firma debe convertirse en public void setOtherReferenceRanges(List<ReferenceRange<DvQuanitity>> referenceRanges)
en tiempo de ejecución.
Usando la reflexión uno puede ver que el List
tiene un actualTypeArgument
que es ReferenceRange<T>
. Como la reflexión usa información de clase, no esperaría que me dé ReferenceRange<DvQuantity>
. Sin embargo, cuando creé la clase que contenía este método, pasé el tipo DvQuantity
como T
. Por lo tanto, el tipo de relleno en T
debe estar disponible para el tiempo de ejecución de Java, pero no pude encontrar la manera de obtenerlo. Termino con un objeto TypeVariableImpl
al que se accede a través de la reflexión, que no parece contener ningún dato útil.
¿Puede encontrar alguna forma de descubrir esta información en tiempo de ejecución?
Gracias por la respuesta. Valida lo que he visto hasta ahora. Lamentablemente, no tengo poder sobre la configuración en la que necesito hacer que esto funcione. También gracias a otras respuestas, todas las cuales serían útiles si tuviera control sobre la situación. – mahonya