我理解为什么我不能将一个与A对应的类转换为与B对应的类(如果B扩展了A)。说明here。但是我不知道为什么这段代码行不通。
public class A {
public static void main(String[] args) {
D<? extends B> d = new D<>();
d.foo(new B()); // compilation error
d.foo(new C()); // compilation error
}
}
class B {
}
class C extends B {
}
class D<T> {
void foo(T t) {
}
}
我想参考解释此原理的官方文档。