hj6*_*690 1 java sorting inheritance compareto comparator
我正在尝试重现这篇文章中提到的问题:比较方法违反了它的一般合同
我做的是创建一个父类A,它有自己的compareTo()函数,然后我创建了一个类B继承自类A,并覆盖compareTo(),如:
public int compareTo(Object o) { return super.compareTo(o);}
另一个C类也继承自A类,并将compareTo()重写为:
public int compareTo(Object o) { return -super.compareTo(o);}
所以我列出了一堆B/C类对象,并使用Collections.sort()对它们进行排序,但是我没有看到前一篇文章中提到的Exception,sort函数运行良好,但它给了我一个奇怪的订购.
有人可以帮我吗?谢谢.
"比较方法违反其一般合同"异常是在尽力而为的基础上抛出的:如果排序算法看到任何明显的东西,它将抛出异常,但它不会做任何额外的工作来测试你的比较方法.您可能只是对测试数据感到满意.
如果幸运的话,不要抛出异常是完全正常的,但是异常可能在以后的任何时刻出现.
| 归档时间: | 
 | 
| 查看次数: | 142 次 | 
| 最近记录: |