1

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

这可以吗,还是更喜欢给对象一个名称或一个 ID 并比较对象名称/ID?

4

2 回答 2

6

您应该使用该equals()方法。如果您想将相等作为名称和/或 id 比较,请在equals()方法内部进行。

这是Java 确定相等性的默认方式。

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

equals()和之间有关系hashcode()。这两个都被 Collections 使用。

于 2012-08-05T20:37:22.767 回答
3

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

如果你想让equals在你的两个对象共享相同的特征时返回true,即使它们是不同的对象,那么你应该覆盖equals并比较这些特征。

如果你覆盖 equals,你也应该覆盖 hashcode

于 2012-08-05T20:38:01.957 回答