什么时候应该覆盖Equals功能?

MBZ*_*MBZ 20 java

可能重复:
Java:始终覆盖等于?

我应该覆盖equals我创建的任何类的函数吗?

即使是非常简单的类,只包含一些非常简单的属性,并且通过equals 我需要它的每个属性相等?

aio*_*obe 30

我应该为我创建的任何类重写equals函数吗?

覆盖equalsif(并且仅当)对象"表示某些数据",即,如果它模拟某些内容Person,Car或者RecipieIngredient(这些通常最终在集合中等).不要为其他类型的类重写equals,例如LoginServletDatabaseUtil.

记得在覆盖hashCode时始终覆盖equals.

(一个自然的后续问题:) 如果我不重写equals和hashCode会发生什么?

任何两个对象都将被视为不相等,除非它们是完全相同的对象.

[...]我需要它的每一个属性是平等的吗?

通常是的.这取决于如何定义你的平等概念.需要注意的是对于引用类型,你可以重用/委托给对象实现的equals(和hashCode)实现自己的时候.

相关问题:


Ted*_*opp 16

equals()如果您有理由,您应该覆盖.如上所述这里,这是非常难写一个适当的equals()非最终或可变类方法.

如果您的应用程序需要某种与"相同对象"不同的平等概念,那么请务必继续.只需阅读上述参考资料即可了解所涉及的内容.但作为例行公事?当然不.