我收到以下错误:
比较方法违反了它的总合同!
这是我的 compareTo 方法
public int compareTo(ComparableItem another) {
if (this.score == another.score)
return this.getItemName().compareTo(another.getItemName());
else if ((this.score) > another.score)
return 1;
else
return -1;
}
我想比较项目的分数。但是当分数相同时,我想按名称对它们进行排序。
我需要更改什么以及为什么会出现此错误?
编辑:
score 是 a int
, itemname a String
。
这是 ComparableItem 类:
public abstract class ComparableItem extends MenuListItem implements Comparable<ComparableItem> {
protected int score;
public ComparableItem(String itemID, String itemName) {
super(itemID, itemName);
}
public int compareTo(ComparableItem another) {
if (this.score == another.score)
return this.getItemName().compareTo(another.getItemName());
else if ((this.score) > another.score)
return 1;
else
return -1;
}
public abstract boolean found(String criteria);
这是 MenuListItem 类:
public class MenuListItem {
private String itemID,itemName;
public MenuListItem(String itemID, String itemName){
setItemID(itemID);
setItemName(itemName);
}
public String getItemID() {
return itemID;
}
public void setItemID(String itemID) {
this.itemID = itemID;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
@Override
public String toString() {
return this.itemName;
}