了解Java Generics子类型

时间:2014-03-24 16:17:01

标签: java generics

Subtypes

来自http://docs.oracle.com/javase/tutorial/java/generics/subtyping.html的图片

List<? super Number>如何成为List<? super Integer>的子类型?

2 个答案:

答案 0 :(得分:2)

这是因为List<? super Integer>是可以转换为可以从List<? super Number>转换的所有列表的捕获。

让我们看看所有类型都可以从List<? super Number>中获取可转换的内容:

  • List<Number>
  • List<Object>
  • List<Serializable>

List<? super Integer>可以捕获 - 转换为所有上述类型。因此,您可以安全地将List<? super Number>分配给List<? super Integer>,而不会出现任何编译器错误。

如果您正在考虑what is capture-conversion,则表示您可以将List<Number>分配给List<? super Number>

答案 1 :(得分:1)

super的任何Number也是super的{​​{1}}。

如下所述,我给出的示例实例不会编译。这可能不是展示它的最佳方式。