Possible Duplicate:
Java: Always override equals?
我应该为我创建的任何类重写 equals
函数吗?
即使对于只包含一些非常简单的属性的非常简单的类,并且 equals 我需要它的每个属性都相等?
最佳答案
should I override equals function for any class that I create?
覆盖 equals
如果(且仅当)对象“表示某些数据”,即如果它对诸如 Person
、Car
之类的东西建模或 RecipieIngredient
(这些通常以集合等形式结束)。不要为其他类型的类覆盖 equals,例如 LoginServlet
或 DatabaseUtil
。
请记住,每当您覆盖 equals
时,请始终覆盖 hashCode
。
(A natural follow-up question:) What happens if I don't override equals and hashCode?
任何两个对象都将被视为不相等,除非它们是完全相同的对象。
[...] I need every single attribute of it to be equal?
通常是。这取决于你如何定义你的平等概念。请注意,对于引用类型,您可以在实现自己的时重用/委托(delegate)给 that 对象实现 equals
(和 hashCode
)。
相关问题:
关于java - 我什么时候应该覆盖 Equals 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010626/