2010-07-27 5 views

Respuesta

6

Supongo que desea conocer la clase de plantilla de la lista en tiempo de ejecución, y la respuesta breve es: no puede. Los genéricos de Java se usan solo en tiempo de compilación: los argumentos de la plantilla se borran antes de que se genere el código byte. Esto se llama "type erasure".

+0

el enlace es inválido pls actualización. –

6

Si su List se define con un parámetro de tipo hormigón, como por ejemplo:

private class Test { 
    private List<String> list; 
} 

a continuación, lo puede conseguir a través de la reflexión:

Type type = ((ParameterizedType) Test.class.getDeclaredField("list") 
    .getGenericType()).getActualTypeArguments()[0]; 

sin embargo, si el tipo no se conoce en tiempo de compilación, que se pierde debido a type erasure

+0

el enlace es no válido pls actualización –

+0

gracias, hecho ... – Bozho

0

Usted puede intentar algo como esto:

Class<List<Foo>> cls = (Class<List<Foo>>)(Object)List.class 
Cuestiones relacionadas