可能的重复:
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(使用前将#替换为@)