有 Java 编程相关的问题?

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


共 (2) 个答案

  1. # 1 楼答案

    使用第一种方法。第二个不允许添加任何元素。这是因为第二种方法使用了扩展ParentClass的未知类型,无法确保要存储的元素来自此类型

    更多信息:

  2. # 2 楼答案

    List<? extends ParentClass>ParentClass的一些特定亚型的列表。因为它不知道具体的子类型是什么,所以编译器不允许您向它添加任何对象

    对于初学者来说,很容易将其与ParentClass的任何子类型相混淆,并想知道为什么他们不能添加子类型的实例

    例如,假设您有以下类层次结构-

    class P { }
    class A extends P { }
    class B extends P { }
    

    现在,如果你宣布一份清单如下-

    List<? extends P> l = ...;
    

    这意味着lP的某些特定子类型的列表,可以是AB(甚至是P本身),但编译器不知道具体是哪一个。因此,您不能向它添加任何内容,因为您可能正在将B的实例添加到A的列表中,从而造成一些堆污染

    当您只想将列表中的元素作为P的实例读取时,可以声明这样一个列表