DD.*_*DD. 5 java generics type-erasure
类型擦除应该删除所有通用信息...如果是这种情况,像GSON这样的库如何使用泛型来确定要反序列化的类型?
例如
private Map<String,Date> tenordates;
Run Code Online (Sandbox Code Playgroud)
这将反序列化到<String,Date>
as
private Map<Date,Date> tenordates;
Run Code Online (Sandbox Code Playgroud)
将反序列化为 <Date,Date>
所以不知何故它在运行时使用通用信息.
类型擦除不会删除所有类型信息.它不会从类,字段,返回类型和参数定义中删除它.保留以下示例中的类型信息:
public class Foo extends List<Bar> { ..}
private List<Foo> foos;
public List<Foo> getFoos() {..}
public void doSomething(List<Foo> foos) {..}
Run Code Online (Sandbox Code Playgroud)
这可以通过反射来访问 - java.lang.reflect.ParameterizedType.您可以检查给定Type是否instanceof是该类,强制转换为它并获取类型信息.