【发布时间】:2016-07-01 20:34:26
【问题描述】:
在这段代码中,最后一行 (list1.addAll(list2);) 生成编译时错误
List) extends BaseClass> 不适用于参数 (List)
我确实意识到,如果允许这样做,则可以将不同类的相同列表实例添加到相同的列表中。但是我不知道这样做的正确方法是什么。
我的getList() 方法需要返回BaseClass 的子类,我无法更改该要求。
我有这两个列表,以相同的方式声明并包含相同类型的对象,我需要将一个添加到另一个列表中。 对此有任何想法将不胜感激。
BaseClass.java:
package main;
public class BaseClass {}
Main.java:
package main;
import java.util.ArrayList;
import java.util.List;
public class Main {
private static List<? extends BaseClass> getList() {
return new ArrayList<>();
}
public static void main(String[] args) {
List<? extends BaseClass> list1 = getList();
List<? extends BaseClass> list2 = getList();
list1.addAll(list2); // Compile-time error: "The method addAll(Collection<? extends capture#3-of ? extends BaseClass>) in the type List<capture#3-of ? extends BaseClass> is not applicable for the arguments (List<capture#4-of ? extends BaseClass>)".
}
}
【问题讨论】: