在Java中使用Object.equals()是一种可接受的做法吗?

时间:2012-08-05 20:35:48

标签: java object

我在Java中创建了一个复杂的对象,我正在使用equals方法对它进行比较。

这是否可以,或者首选为对象提供名称或ID并比较对象名称/ ID?

2 个答案:

答案 0 :(得分:6)

您应该使用equals()方法。如果要使等式成为名称和/或id比较,请在equals()方法中进行。

这是Java determines equality

的默认方式

另外,请看一下这个问题的一些答案:Overriding the java equals() method quirk

equals()hashcode()之间存在关系。这两个都是集合使用。

答案 1 :(得分:3)

equals继承的默认Object#equals()比较引用。换句话说,如果2个对象相同(内存中的对象相同),则返回true。

如果你希望equals在你的2个对象共享相同的特征时返回true,即使它们是不同的对象,那么你应该重写equals并比较这些特性。

如果您覆盖等于you should also override hashcode