Generic type information is not available at runtime in Java for backwards compatibility reasons.
究竟兼容性原因在这里意味着什么?在某些情况下也可以使用通用类型信息,或者它总是不可用,除了向后兼容性之外还有其他原因吗?
我对此有一些了解,但如果有人愿意回答这个问题,我想最终理解它。我已阅读过几篇文章和一些Oracle文档,但他们没有关注我试图弄清楚的问题。
答案 0 :(得分:4)
类型信息始终已删除。想象一下,你有一组字符串,你会(现在)使用Set<String>
- 但在添加泛型之前,它只是Set
。为了确保将泛型添加到Java时的向后兼容性(2004年使用J2SE 5.0),将删除类型信息。因此,Set<String>
会编译为Set
,以便与添加泛型之前编写的代码兼容。