Правильно ли для equals () зависеть только от идентификатора?
Позволять'Предположим, у меня есть класс: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
всегда уникален Это's предоставляется в базе данных. Мойequals
реализация достаточно компетентна, чтобы учесть это? Или это не лучшая практика?
Конечно, я понимаю, что в этом случаеhashCode
Реализация должна быть следующей:
@Override
public int hashCode() {
return id.intValue();
}