>本文讲解了重写equals()方法以实现对象内容的逻辑相等性,并强调必须同时重写hashCode()。文章提供了遵循五个协定(自反、对称、传递、一致、非空)的最佳实践模板,确保与哈希集合兼容。 为什么需要重写 ? 在 Java 中,所有类都隐式或显式地继承自 类。 类提供了一个基本的 方法,其默认实现是: 这表示,默认的 方法比较的是两个对象的内存地址,即判断它们是否为同一个对象的引用。这被称为“引用相等性”(Reference Equality)。 然而,在很多业务场景下,我们关心的是两个对象的内容或状态是否相同,而不是它们是否指向同一块内存。例如,我们认为 和另一个 是相等的。这种基于内容的比较被称为“逻辑相等性”(Logical Equality)。 因此,当你希望自定义类的相等性判断标准时,就需要重写 方法。 --- 方法的重写协定(The Contract) Java 官方文档为 方法规定了五个必须遵守的通用协定。如果违反这些协定,可能会导致程序的行为变得不可预测,尤其是在使用集合类(如 , )时。 这五个协定是: 1. 自反性 (Reflexive) 规则:对于任何...