一些通用类型信息存储在
Signature属性中。请参阅JLS
4.8
和4.6以及JVM规范4.3.4。在这里阅读:
关于Java中的泛型,最常见的抱怨可能是它们没有被泛化-无法在运行时知道a
List<String>与a的不同之处List<Long>。我已经习惯了这一点,以至于惊讶地发现Neil Gafter在Super Type
Tokens方面的工作。 事实证明,尽管JVM不会跟踪泛型类实例的实际类型参数,但它会跟踪泛型类的子类的实际类型参数。 换句话说,虽然newArrayList<String>()实际上ArrayList()在运行时只是一个new
,但是如果一个class扩展了ArrayList<String>,那么JVM就会知道这String是的type参数的实际List类型参数。
和Neal Gafter的博客。



