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答案 0 :(得分:2)
ShipDetail
与自身无法比较。绑定在这里:
<T extends Comparable<T>>
也适用于参数中的类型变量T
,推断为ShipDetail
。
ShipDetail
应定义如下:
class ShipDetail implements Comparable<ShipDetail> { ...
而不是:
class ShipDetail implements Comparator<ShipDetail> { ...
Comparator
是提供其他对象比较服务的对象算法,而Comparable
是自身允许将它们与其他类型的对象进行比较的对象。