我在编译一些Java 7代码并运行后,遇到了一个"Comparison Method violates its general contract(比较方法违反了其总体契约)"的错误。
我已经阅读了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);
有人能帮忙吗?谢谢!