我在 Java 中创建了一个复杂对象,并使用 equals 方法进行比较。
这可以吗,还是更喜欢给对象一个名称或一个 ID 并比较对象名称/ID?
您应该使用该equals()
方法。如果您想将相等作为名称和/或 id 比较,请在equals()
方法内部进行。
这是Java 确定相等性的默认方式。
另外,看看这个问题的一些答案:Overriding the java equals() method quirk
equals()
和之间有关系hashcode()
。这两个都被 Collections 使用。
默认equals
继承自Object#equals()
比较引用。换句话说,如果 2 个对象相同(内存中的相同对象),则返回 true。
如果你想让equals在你的两个对象共享相同的特征时返回true,即使它们是不同的对象,那么你应该覆盖equals并比较这些特征。
如果你覆盖 equals,你也应该覆盖 hashcode。