在Java 7中编译了一些Java代码,然后运行它之后,我得到了“比较方法违反了它的一般合同”。
我已经阅读了Comparison method violates its general contract! Java 7 only,并意识到我的代码在先前版本的Java中被忽略了。但是我无法弄清楚我的代码有什么问题。 Collections.sort()生成错误。
我的代码是:
public Comparator sortBySmoothDays() {
Comparator c = new Comparator() {
public int compare(Object arg0, Object arg1) {
Date date0 = ((PosObject)arg0).getDate();
Date date1 = ((PosObject)arg1).getDate();
double d1 = MyUtils.calcSmoothDays(date0, new Date());
double d2 = MyUtils.calcSmoothDays(date1, new Date());
if (d1 >= d2) {
return 1;
}
else {
return -1;
}
}
};
return c;
}
Comparator c = ComparatorUtils.getInstance().sortBySmoothDays();
Collections.sort(posList, c);谁能帮忙?谢谢!