我有一个超类和两个扩展该超类的子类。
我有一个ArrayList包含第一个子类的一些对象,另一个ArrayList包含第二个子类的一些对象。
我想将子类对象的那些ArrayList之一中的引用复制到超类对象的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
。但这对我来说似乎很麻烦,我想知道是否有更短的方法。
问:如何轻松地将一种类型的对象的列表强制转换为该类型的对象的超类的列表?
ArrayList
实现Collection
接口,因此支持以下Collection.addAll()
方法:
if (needsSubClass1) {
listOfSuperClassObjects.addAll(listOfSubClass1Objects);
} else {
listOfSuperClassObjects.addAll(listOfSubClass2Objects);
}
顺便说一句,ArrayList
还有一个通用的复制构造函数,它可能只是addAll()
自己调用:
listOfSuperClassObjects = new ArrayList<SuperClass>(listOfSubClass1Objects);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句