Object 类中的 equals 方法用于检测一个对象是否等于另外一个对象。Object 类中实现的 equals 方法将确定两个对象引用是否相等。这是一个合理的默认行为:如果两个对象引用相等,这两个对象肯定就相等。 对于很多类来说,这就足够了。例如,比较两个 PrintStream 对象是否相等并没有多大的意义。不过,经常需要基于状态监测对象的相等性,如果两个对象有相同的状态,才认为这两个对象是相等的。
例如,如果两个员工对象的姓名、薪水和雇用日期都一样,就认为它们是相等的。
class Employee
{
private String name;
private double salary;
private LocalDate hireDay;
...
@Override
public boolean equals(Object otherObject)
{
// a quick test to see if the objects are identical
if (this == otherObject) return true;
// must return false if the explicit parameter is null
if (otherObject == null) return false;
// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass())
return false;
// now we know otherObject is a non-null Employee
Employee other = (Employee) otherObject;
// test whether the fields have identical values
return name