Java编译器如何为较低边界的通配符执行类型擦除?

Paw*_*wan 8 java oop generics

在使用泛型类型编译源代码时,Java编译器会自动执行类型擦除,用适当的原始类型替换泛型声明.

根据Oracle文档,此擦除<? extends T>用T 替换上部绑定通配符.这非常适合动态多态.

但是<? super T>,如果每个类都有一个共同的超类(Object),那么这个擦除是如何针对较低有界通配符执行的,使用它会破坏整个目的?

Kum*_*nav 8

对于超类型,它将擦除为对象类型.<?super T>仅用于编译时验证