通配符实例化中的限制比声明中更宽松

时间:2017-08-14 17:40:49

标签: java generics bounded-wildcard

考虑以下课程:

class A<T extends Number> {
} 

我想知道为什么这行成功编译?

A<? extends Object> a = new A<Integer>();

虽然这段代码不是

class B {
  static <T extends Object> void m(A<T> a) {}
} 

在这两种情况下,编译器都知道&#34;范围? extends Object超出范围? extends Number,范围为A,但接受第一个并拒绝第二个。

Java语言或JVM规范中有什么相关内容吗?

0 个答案:

没有答案