【发布时间】:2018-04-12 02:05:03
【问题描述】:
我目前正在研究Comparator 接口,并注意到在Comparator's equals 方法的文档中,它指出
请注意,不要覆盖 Object.equals(Object) 总是安全的
我已经检查了Object 类中默认equals 方法的实现
因此使用equals 方法的默认实现,它只是检查两个实例是否指向同一个对象,因为this == obj 测试引用是否相等。
但是如果我有两个Comparator 实例会发生什么,它们返回的结果是相同的,我想知道它们是否相等。如果我不覆盖默认的Object's equals 方法,那么无论它们返回的结果是否相等,通过使用默认的Object's equals 方法,将始终返回false。那么是否仍然不覆盖 Object.equals(Object) 总是安全的?
【问题讨论】:
-
你不应该期望比较器覆盖
equals()。这只是一种可能的优化。 -
@shmosel 因此可以比较
Comparator的两个实例并返回false,即使它们的实现相同? -
如果他们是
==,则不是,否则是。 -
好的,感谢您的帮助:)
-
Comperator是一种“排序”某些对象的方法。它有一些要求:一个对象“小于”另一个对象或“大于”另一个对象或等于。如果Comperator返回 0(两个对象相等),equal应该返回true,但这不是必需的。
标签: java equals comparator