编写equals运算符时处理null的最佳方法是在方法体的开头检查传入的参数是否为null,如果是则直接返回false。这是因为根据equals方法的规则,如果传入的参数为null,那么该对象不可能与任何其他对象相等,因此直接返回false是合理的。
例如,假设我们有一个名为Person的类,它有两个属性:name和age。我们可以按照以下方式编写equals方法:
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final Person other = (Person) obj;
if (!Objects.equals(this.name, other.name)) {
return false;
}
if (this.age != other.age) {
return false;
}
return true;
}
在上面的代码中,我们首先检查传入的参数是否为null,如果是则直接返回false。然后我们检查传入的参数是否属于同一个类,如果不是则返回false。最后,我们比较两个对象的属性是否相等,如果所有属性都相等,则返回true,否则返回false。
需要注意的是,在编写equals方法时,我们还需要遵守一些规则,例如:
遵守这些规则可以确保我们编写的equals方法具有良好的行为,并且可以正确地比较对象是否相等。
领取专属 10元无门槛券
手把手带您无忧上云