小编hj6*_*690的帖子

如果我在两个子类中以不同方式覆盖compareTo()会发生什么

我正在尝试重现这篇文章中提到的问题:比较方法违反了它的一般合同

我做的是创建一个父类A,它有自己的compareTo()函数,然后我创建了一个类B继承自类A,并覆盖compareTo(),如:

public int compareTo(Object o) { return super.compareTo(o);}
Run Code Online (Sandbox Code Playgroud)

另一个C类也继承自A类,并将compareTo()重写为:

public int compareTo(Object o) { return -super.compareTo(o);}
Run Code Online (Sandbox Code Playgroud)

所以我列出了一堆B/C类对象,并使用Collections.sort()对它们进行排序,但是我没有看到前一篇文章中提到的Exception,sort函数运行良好,但它给了我一个奇怪的订购.

有人可以帮我吗?谢谢.

java sorting inheritance compareto comparator

1
推荐指数
1
解决办法
142
查看次数

标签 统计

comparator ×1

compareto ×1

inheritance ×1

java ×1

sorting ×1