我有一个 java 项目,我需要身份比较(两个引用是否相同)和相等比较(两个对象是否包含相同的数据)。
我的解决方案是不覆盖 equals/hashcode,并向我的对象添加 isEqual 方法。
有没有更好的模式来处理这种情况?
编辑:
这是有关此特殊需求的更多信息。
默认情况下,我们有:
equals
执行身份检查 (==)contains
是根据 来实现的equals
,因此使用 ==
但对于我的用法,我想要:
equals
执行相等检查(对象包含相同的数据)contains
继续执行 ==
我不能同时拥有两者,因此一种解决方案是实施我自己的平等检查并拥有:
contains
保持不变,使用 ==- 实施
isEqual
和使用它而不是equals
另一个解决方案是实现我自己的使用 == 的包含:
- 实现
customContains
使用 == 并使用它而不是contains
- 覆盖
equals
以检查对象是否包含相同的数据
哪个最好?还有另一种更好的方法吗?