2011-01-17 11 views
5

Se supone que la borradura de tipo borra toda la información genérica ... Si este es el caso, ¿cómo una biblioteca como GSON usa genéricos para determinar a qué tipo deserializar?Tipo Borrado en Java

p. Ej.

private Map<String,Date> tenordates; 

Esto deserializar a <String,Date> donde como

private Map<Date,Date> tenordates; 

va a deserializar <Date,Date>

así de alguna manera su uso de la información genérica en tiempo de ejecución.

+2

puede ser reflejo .. No he comprobado el código. –

+0

posible duplicado de [getSimpleNameWithGenerics (Clase clazz)] (http://stackoverflow.com/questions/4707042/getsimplenamewithgenericsclass-clazz) – bmargulies

Respuesta

5

El borrado de tipos no borra toda la información del tipo. No lo elimina de clase, campo, tipo de retorno y definiciones de parámetros. La información de tipo en los siguientes ejemplos se retiene:

public class Foo extends List<Bar> { ..} 

private List<Foo> foos; 

public List<Foo> getFoos() {..} 

public void doSomething(List<Foo> foos) {..} 

Esto es accesible a través de la reflexión - la java.lang.reflect.ParameterizedType. Puede verificar si un determinado Type es instanceof esa clase, se le emite y obtiene la información del tipo.

Cuestiones relacionadas