我什么时候应该重写 Equals 函数? [复制]

2024-03-21

可能的重复:
Java:总是覆盖等于? https://stackoverflow.com/questions/1549553/java-always-override-equals

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

即使对于只包含一些非常简单的属性的非常简单的类,equals我需要它的每个属性都相等吗?


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

覆盖equals如果(且仅当)对象“代表某些数据”,即如果它建模诸如Person, Car or RecipieIngredient(这些通常最终会出现在集合等中)。例如,不要覆盖其他类型的类的 equalsLoginServlet or DatabaseUtil.

请记住始终覆盖hashCode每当你覆盖equals.

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

任意两个对象都会被考虑unequal除非它们是完全相同的对象。

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

通常yes。这取决于如何you定义你的平等概念。请注意,对于引用类型,您可以重用/委托给that对象的实现equals (and hashCode)在实现您自己的时。

相关问题:

  • 为什么我们需要在java中重写equals和hashcode以及为什么我们不能使用Object类实现 https://stackoverflow.com/questions/3028699/why-we-need-to-override-equals-and-hashcode-in-java-and-why-cannot-we-use-object
  • 为什么我需要重写 Java 中的 equals 和 hashCode 方法? https://stackoverflow.com/questions/2265503/why-do-i-need-to-override-the-equals-and-hashcode-method-in-java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该重写 Equals 函数? [复制] 的相关文章

随机推荐