Reflexión de Java: ¿cómo funcionan los métodos Method.getGenericXXXXX?

Acabo de notar que hay un Method.getGenericReturnType() así como también a Method.getReturnType() y pares similares para tipos de excepciones y tipos de parámetros.

Pensé que los genéricos en Java funcionaban mediante el borrado de tipos. Entonces, ¿cómo funcionarían estos métodos en tiempo de ejecución? (¿y para qué los usaría en tiempo de ejecución?)

preguntado el 16 de mayo de 11 a las 17:05

2 Respuestas

Se conservan los genéricos que tienen tipos concretos que forman parte de declaraciones (métodos, campos, clases, argumentos).

Para que pueda obtener los tipos de esta declaración.

 public List<String> toString(List<Foo> foos) { .. }

Pero no puedes con este código:

public List<E> transform(List<E> list) {
  // E is not accessible at runtime
}

contestado el 16 de mayo de 11 a las 21:05

raro ... así que si estoy haciendo el envío del método en tiempo de ejecución (stackoverflow.com/questions/6021109/…) ¿Entonces yo también tengo que preocuparme por este aspecto? - Jason S

(no necesitas un <E> antes List<E> en su segundo ejemplo?) - Jason S

Supuse que E es parte de la declaración de clase, pero también puede estar en el método. - Bozho

Los genéricos pueden funcionar mediante borrado, pero el código que usa sus clases compiladas aún necesita usar genéricos correctamente. Allí hay información adicional para el compilador, que puede obtener, pero esto no cambia su comportamiento en tiempo de ejecución.

contestado el 16 de mayo de 11 a las 22:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.