我想用Java编译我自己实现的链接列表使用可比接口。我需要实现compareTo方法:这是我的类ListElement的代码:
public class ListElement implements Comparable<ListElement> {
public Object wert;
public ListElement nachFolger;
public ListElement(Object wert , ListElement nachFolger) {
this.wert=wert;
this.nachFolger=nachFolger;
}
@Override
public int compareTo(ListElement a) {
if(this.nachFolger.wert - a.wert) {
return 1;
}
return 0;
}
}
但我得到一个错误,任何建议?
您试图减去Object
类型的引用。
您的元素类型应该实现Comparable
:
public class ListElement<T extends Comparable<T>> implements Comparable<ListElement<T>> {
public T wert;
public ListElement<T> nachFolger;
public ListElement(T wert, ListElement<T> nachFolger) {
this.wert=wert;
this.nachFolger=nachFolger;
}
@Override
public int compareTo(ListElement<T> a) {
return wert.compareTo(a.wert);
}
}
在Java中,减法操作仅适用于数字文字(和自动取消装箱的数字对象)。当您尝试在非数字Object
类型上使用它时,您将收到错误。如果要比较两个wert
值,可以执行以下操作:
number
将类型更改为Object
,以便您可以比较,例如:
public Object wert;
@Override
public int compareTo(ListElement a) {
return wert.compareTo(a.wert);
}
Comparable
,以便您可以在两个compareTo
对象上使用wert
public Comparable wert;
@Override
public int compareTo(ListElement a) {
return wert.compareTo(a.wert);
}