将子类的ArrayList复制到超类的ArrayList

时间:2014-08-23 12:50:28

标签: java inheritance arraylist

我有一个超类和两个扩展该超类的子类。

我有一个ArrayList,它包含第一个子类的一些对象,另一个ArrayList包含第二个子类的一些对象。

我想将其中一个子类对象的ArrayLists中的引用复制到超类对象的ArrayList中,因为这样可以节省大量代码行(只有一个列表而不是两个)。

ArrayList<SubClass1> listOfSubClass1Objects = getList1();
ArrayList<SubClass2> listOfSubClass2Objects = getList2();

ArrayList<SuperClass> listOfSuperClassObjects = new ArrayList<SuperClass>();

if (needsSubClass1){
    listOfSuperClassObjects = listOfSubClass1Objects;
} else {
    listOfSuperClassObjects = listOfSubClass2Objects;
}

这会出现错误:Cannot convert from ArrayList<SubClass1> to ArrayList<SuperClass>

所以我能做的是做一个for循环:对于每个对象,添加到listOfSuperClassObjects。但这对我来说似乎很麻烦,我想知道是否有更短的路。

问:如何轻松地将一种类型的对象列表转换为该类型对象的超类列表?

1 个答案:

答案 0 :(得分:1)

ArrayList实现Collection interface,因此支持Collection.addAll() method

if (needsSubClass1) {
    listOfSuperClassObjects.addAll(listOfSubClass1Objects);
} else {
    listOfSuperClassObjects.addAll(listOfSubClass2Objects);
}

顺便提一下,ArrayList也有generic copy constructor,可能只是自己调用addAll()

listOfSuperClassObjects = new ArrayList<SuperClass>(listOfSubClass1Objects);