有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java对象类型列表和扩展类型的对象列表之间的区别

我经常遇到以下情况:

List<Fooable> fooList;

vs

List<? extends Fooable> fooList;

这两者有什么区别?或者,在描述此差异的地方,是否有此/先前存在的链接的名称?我不能用谷歌搜索这个概念,因为我不知道它叫什么,或者你怎么描述它

如果Fooable是一个接口,这有关系吗?具体的课程?抽象类?这是否只适用于扩展和/或实现某些内容的类


共 (1) 个答案

  1. # 1 楼答案

    如果没有复制品

    AList<Animal>可以包含CatDog。您可以将猫和狗添加到列表中。这并不意味着它只能包含Animals

    但是,如果您有一个方法foo(List<Animal> foo),则不能将List<Cat>传递给它。但是您可以将Cats、Dogs或Animals添加到传递的List<Animal>

    如果您有一个foo(List<? extends Animal> foo),您可以将List<Animal>List<Dog>List<Cat>传递给它并从中读取,即您可以访问Animal的方法

    但是,由于Animal的任何子类型的列表都可能被传递给它(您不知道是哪种类型,它可能是Animal、aCat或aDog,或者是一些完全不同的Animal,因此不能向它添加任何元素(除了null