Предположим, что у меня есть класс User
:
public class User {
private Long id;
private String name;
private Integer age;
private BigDecimal account;
// other fields, getters and setters
}
Правильно ли переопределить метод equals
следующим образом?
@Override
public boolean equals(Object ob) {
if (ob == null) {
return false;
}
if (this == ob) {
return true;
}
if (ob instanceof User) {
User other = (User) ob;
return this.id.equals(other.getId());
}
return false;
}
Оказывается, что уникальность объекта определяется только его идентификатором. Но в моем приложении id
всегда уникален. Он предоставлен в базе данных. Является ли моя реализация equals
достаточно компетентной, чтобы учесть это? Или это не лучшая практика?
Конечно, я понимаю, что в этом случае реализация hashCode
должна быть следующей:
@Override
public int hashCode() {
return id.intValue();
}