在Java中使用传递一个子类数组作为其父类

时间:2016-01-17 12:38:39

标签: java arrays list sorting inheritance

我有三个类的模拟:EntitiesPlantsAnimals(植物和动物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>)

2 个答案:

答案 0 :(得分:4)

  

有没有办法将所有数组作为父类传递给方法?

是的,如果你通过ArrayList<Entity>,你就可以使用所有3种类型,因为他们extend是同一个父类。

我会尝试将方法的签名更改为:

void sortEntityArray(ArrayList<? extends Entity> ListToSort)

答案 1 :(得分:1)

你可以使用java .sort函数,这将适用于任何数组。