@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
return id == user.id &&
Objects.equals(name, user.name) &&
Objects.equals(accountName, user.accountName) &&
Objects.equals(password, user.password);
}
@Override
public int hashCode() {
return Objects.hash(name, accountName, password, id);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof User)) return false;
User user = (User) o;
return id == user.id &&
name.equals(user.name) &&
accountName.equals(user.accountName) &&
password.equals(user.password);
}
@Override
public int hashCode() {
return Objects.hash(name, accountName, password, id);
}
区别在于Object.equals()这个方法。
拿name字段举例:
如果勾选,使用name.equals(user.name)进行比较,如果name为null,则会抛出空指针异常;
如果不勾选,使用Objects.equals(name, user.name)进行比较,会先对name进行非空检查。