ArrayList<ShipDetail> detailArray = new ArrayList<ShipDetail>(Arrays.asList(shipDetail));
Sorter.QuickSort( detailArray );


这是我在Sorter类中尝试实现的一些算法。

public class Sorter
{
   public static<T extends Comparable<T>> void QuickSort(AbstractList<T> collection )
   {
        quickSort(collection,0,collection.size()-1);
   }

}


但是在编译时出现以下错误:

必需:AbstractList
  找到:ArrayList
  原因:推断变量T具有不兼容的范围
    等式约束:ShipDetail
    上限:可比
  其中T是类型变量:
    T扩展了在方法QuickSort(AbstractList)中声明的Comparable

最佳答案

ShipDetail与自身不具有可比性。这里的界限:

<T extends Comparable<T>>

也适用于参数中的类型变量T,该变量推断为ShipDetail

ShipDetail应定义如下:

class ShipDetail implements Comparable<ShipDetail> { ...


并不是:

class ShipDetail implements Comparator<ShipDetail> { ...


Comparator是提供其他对象比较服务的对象算法,而Comparable是本身允许将它们与其他类型的对象进行比较的对象。

09-11 20:08