1 回答
TA贡献2011条经验 获得超2个赞
您的代码是混淆了你,因为T通过定义comp是躲藏在T被定义arr。对于下面的解释,我将它们称为Tcomp和Tarr。
Tcomp需要扩展Comparable,但Tarr不需要这样做,这意味着Tarr不能“映射”到Tcomp.
要修复,请更改,Tarr因此还需要扩展Comparable:
public class arr<T extends Comparable<T>>
附带说明:
您的comp类是一个内部类,但它不使用外部类中的任何内容,因此它应该是一个静态嵌套类:
static class comp<T extends Comparable<T>> implements Comparator<T>
或者,comp作为一个内部类,让它重用T来自外部类的:
class arr<T extends Comparable<T>>
{
class comp implements Comparator<T>
但是,由于 Java(8 或更高版本)带有Comparator用于比较Comparable对象的实现,您应该使用它:
public class arr<T extends Comparable<T>>
{
ArrayList<T> list;
Comparator<T> comparator;
public arr()
{
list = new ArrayList<T>();
comparator = Comparator.naturalOrder();
}
// rest of code
}
添加回答
举报