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
是本身允许将它们与其他类型的对象进行比较的对象。