public static void main(String... args) {
List<Child> list1 = new ArrayList<Child>();
method2(list1);
}
public static void method2(List<Parent> list1) {
}
我遇到了以下编译错误
方法method2(List)未定义...
可以通过将List<Parent> list1
修改为List<? extends Parent> list1
来解决上述问题。
但是,如果我尝试添加子对象,如下所示:
public static void method2(List<? extends Parent> list1) {
Child child1 = new Child();
list1.add(child1);
}
它再次给出编译错误
在类型 List 中,方法 add(capture#1-of ? extends Parent)对于参数(Child)不适用
所以我的问题是,如果可以将 List<Child>
作为参数传递给 List<? extends Parent> list1
,为什么我们不能在 List<? extends Parent>
下添加子对象?
Child2 extends Parent
。如果允许的话,你可以将一个Child
实例添加到List<Child2>
中。 - Alexis C.class Child extends Parent {}
时,我就会开始抽搐。孩子不应该成为父母!!! LSV。Parent parent = new Child();
是继承的一个荒谬的类比。 - Radiodefclass Gidget extends Gadget {}
,我们也会理解问题。它本来可以是任何东西。无论如何,我并不是在批评这个问题。 - Radiodef