java.lang.Comparable和equals

aps*_*aps 25 java equals comparable

如果我java.lang.Comparable为一个类实现,我仍然必须覆盖该equals()方法吗?或者也将Comparable工作equals

如果答案是否定的,那么如果出现一些差异怎么办?假设我在equals()方法中将两个对象称为相等的方式不同于我将两个相同类的对象称为相等的compareTo()方式Comparable.

而且,如果我实施Comparable,我还必须覆盖equals()吗?

dle*_*lev 29

虽然建议(并且非常明智)a.compareTo(b) == 0暗示a.equals(b)(反之亦然),但不是必需的.Comparable用于对一系列对象执行排序时使用,而equals()只是测试直线相等.

这个链接有一些关于compareTo正确实施的好信息.


And*_*ich 7

来自java.lang.Comparable的 Javadoc :

强烈建议(尽管不要求)自然排序与equals一致.


gno*_*med 5

尽管建议,它不要求.equals().compareTo()具有相同的行为.

只需查看BigDecimal API:http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html#equals(java.lang.Object)