繁体   English   中英

Java中的类型擦除

[英]Type Erasure in Java

类型擦除应该擦除所有泛型信息...如果是这种情况,那么像GSON这样的库如何使用泛型来确定要反序列化为哪种类型?

例如

private Map<String,Date> tenordates;

这将反序列化为<String,Date> ,其中

private Map<Date,Date> tenordates;

将反序列化为<Date,Date>

因此以某种方式在运行时使用通用信息。

类型擦除不会擦除所有类型信息。 它不会从类,字段,返回类型和参数定义中将其删除。 保留以下示例中的类型信息:

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 ,将其强制转换为该类并获取类型信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM