我有一个超类和两个扩展该超类的子类。
我有一个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
。但这对我来说似乎很麻烦,我想知道是否有更短的路。
问:如何轻松地将一种类型的对象列表转换为该类型对象的超类列表?
答案 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);