在这How Generics works in Java
部分 它说
Java 编译器,当它看到使用泛型编写的代码时,它会完全擦除该代码并将其转换为原始类型,即没有泛型的代码。在擦除过程中,所有类型相关信息都会被删除。因此,您的 ArrayList 在 JDK 1.5 之前变成普通的旧 ArrayList,形式类型参数,例如,或者被类型的 Object 或 Super Class 替换。
我的问题是关于最后一行 - formal type parameters e.g. <K, V> or <E> gets replaced by either Object or Super Class of the Type
。
在哪种情况下它们被 Object 替换,在哪种情况下它们被对象类型的 Super Class 替换?
更新 :
当我们有如下通配符时会发生什么?
List<? extends Foo>