我有三个类的模拟:Entities
,Plants
和Animals
(植物和动物extends
实体)。
我想要一个方法能够对三个数组进行排序,数组中的元素都继承自同一个类。
有没有办法将所有数组作为父类传递给方法。
我在打电话:
sortEntityArray(AnimalList);
自:
void sortEntityArray(ArrayList<Entity> ListToSort) {
boolean sorted = false;
while (sorted == false) {
sorted = true;
for (int i1 = 0; i1 < ListToSort.size() - 1; i1++) {
if (ListToSort.get(i1).PositionX < ListToSort.get(i1 + 1).PositionX) {
sorted = false;
//switch
Entity Temp = ListToSort.get(i1);
ListToSort.set(i1, ListToSort.get(i1 + 1));
ListToSort.set(i1, Temp);
}
}
}
}
当我试图通过时,我得到了这个错误:
The method sortEntityArray(ArrayList<Entity>) in the type World is not applicable for the arguments (ArrayList<Animal>)
答案 0 :(得分:4)
有没有办法将所有数组作为父类传递给方法?
是的,如果你通过ArrayList<Entity>
,你就可以使用所有3种类型,因为他们extend
是同一个父类。
我会尝试将方法的签名更改为:
void sortEntityArray(ArrayList<? extends Entity> ListToSort)
答案 1 :(得分:1)
你可以使用java .sort函数,这将适用于任何数组。