【发布时间】:2012-05-31 12:29:34
【问题描述】:
我不懂 Javadoc:
The natural ordering for a class C is said to be consistent with equals if and only if
(e1.compareTo((Object)e2) == 0) has the same boolean value as e1.equals((Object)e2) for
every e1 and e2 of class C.
为什么会这样?
我知道 e1.equals(e2)=true 应该总是暗示 e1.compareTo(e2)==0,但我不明白为什么相反的情况应该成立。比较不是平等! 2 个相等的对象应该与零进行比较,但如果排序标准与它们的情况不相关,则 2 个不同的对象应该能够比较为 0。我的意思是,不同的对象相等是不正确的,但不同的对象具有 0 比较为什么不呢?
编辑:后来它说强烈推荐一致性,因为一些兼容性问题,因此问题
【问题讨论】:
-
我不明白这个问题,这是
compareTo()和equals()之间“一致性”的定义,它没有说你应该或不应该做什么,只是给出一个定义。 -
好的,但后来它说它是推荐的,我不明白为什么。即便如此,我也无法理解为什么与零相比不相等的对象在哲学观点上不一致
标签: java collections equals comparator comparable