Java 泛型、未绑定通配符<>与<对象>
我已经阅读了一些主题,这些主题涵盖了有关泛型的某些问题,例如它们与原始类型的关系。但是,我想对Java SE教程中关于未绑定泛型的某一行进行额外的解释。
根据一句话:
printList的目标是打印任何类型的列表,但它未能实现该目标 - 它只打印对象实例的列表;它无法打印 List<Integer>、List<String>、List<Double> 等,因为它们不是 List<Object> 的子类型。
如果我理解这句话很好;和 之间的区别在于,我们可以使用类型参数或通过实现前者。而如果我们稍后实现,我们只能使用type参数。好像是的上限,即。List<?>
List<Object>
List<String>
List<Integer>
List<Object>
List<?>
Object
List<? extends Object>
但是,接下来的句子让我感到困惑,因为根据我以前的理解,应该只包含类的实例,而不是其他东西。List<Object>
Object
重要的是要注意这一点,并且不一样。可以将对象或任何子类型对象插入到 .但是您只能插入到 .
List<Object>
List<?>
List<Object>
null
List<?>