有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

对Java超类和子类进行排序

我在做这个任务,我们必须创建两种类型的对象

public class Person implements Cloneable, Comparable<Person>

public class Book implements Cloneable, Comparable<Book>

该程序的主要任务是使用其自身的比较函数对两种类型进行排序,如下所示:

compareTo(Person o)
compareTo(Book o)

因此,我在主函数中创建了2个ListArray,如下所示,用于存储book和person对象:

List<Book> bookArray = new ArrayList<Book>();
List<Person> peopleArray = new ArrayList<Person>();

我在另一个类中实现了我的排序算法,如下所示:

public class Sort{
Comparable<Object>[] values;
public Sort(List<Object> inputArray) {
  this.values = (Comparable<Object>[]) inputArray.toArray();
}
public doSort() {
  //sort implementation...
}

问题在于使用上述数组调用此函数时

Sort sorter = new Sort(peopleArray);
sorter.doSort();

Eclipse显示的错误是“构造函数排序(列表)未定义” 我做错了什么? 提前谢谢你


共 (1) 个答案

  1. # 1 楼答案

    可以将任何类实例传递给对象类型。但List并不是List的父对象。这只是两种不同的类型

    你可以说

    public Sort(List<? extends Object> inputArray) 
    

    这样它就可以接受任何类型