它重新定义了对象的“平等”。
默认情况下(在中定义
java.lang.Object),仅当一个对象是同一实例时,该对象才等于另一个对象。但是,当您覆盖它时,可以提供自定义相等逻辑。
例如,
java.lang.String通过比较内部字符数组定义相等性。这就是为什么:
String a = new String("a"); //but don't use that in programs, use simply: = "a"String b = new String("a");System.out.println(a == b); // falseSystem.out.println(a.equals(b)); // true即使您可能不需要测试是否相等,使用的类也可以。对于示例实施方式
List.contains(..)和
List.indexOf(..)应用
.equals(..)。
检查javadoc以获取该
equals(..)方法所需的确切合同。
在许多情况下,覆盖时,
equals(..)您还必须覆盖
hashCode()(使用相同的字段)。这也在javadoc中指定。



