类型擦除应该删除所有通用信息...... 如果是这种情况,像GSON这样的库如何使用泛型来确定要反序列化的类型?
e.g。
private Map<String,Date> tenordates;
这将反序列化为<String,Date>
在哪里
private Map<Date,Date> tenordates;
将反序列化为<Date,Date>
所以不知何故它在运行时使用通用信息。
答案 0 :(得分:5)
类型擦除不会删除所有类型信息。它不会从类,字段,返回类型和参数定义中删除它。保留以下示例中的类型信息:
public class Foo extends List<Bar> { ..}
private List<Foo> foos;
public List<Foo> getFoos() {..}
public void doSomething(List<Foo> foos) {..}
这可以通过反射访问 - java.lang.reflect.ParameterizedType
。您可以检查给定的Type
是否为instanceof
该类,并将其投射到该类并获取类型信息。