我应该为我创建的任何类重写equals函数吗?
equals当(且仅当)对象“表示某些数据”(即,如果它对
Person,
Car或
RecipieIngredient(例如,这些通常以集合等结尾))进行建模时,覆盖。不要覆盖其他类型的类的equals,例如
LoginServlet或
DatabaseUtil。
请记住,
hashCode无论何时重写,都应始终重写
equals。
(一个自然的后续问题:) 如果我不重写equals和hashCode会怎样?
除非它们是完全相同的对象,否则任何两个对象都将被视为 不相等 。
[…]我需要它的每个属性都相等吗?
通常 是 。这取决于 您 如何定义平等概念。请注意,对于引用类型,在实现自己的对象时,可以重用/委托 该
对象的实现
equals(和
hashCode)。



