Правильный способ реализации контракта равных [дубликат]
На этот вопрос уже есть ответ:
Какие проблемы следует учитывать при переопределении equals и hashCode в Java? 11 ответовУ меня есть доменный объект с именем Пользователь. Свойства пользователя включают в себя ssoId, имя, адрес электронной почты, создалBy, madeDate и userRole. Из этих,ssoId должен быть уникальным в том смысле, что два пользователя не могут иметь одинаковый идентификатор sso. Поэтому мой метод equals проверяет идентификатор sso и возвращает либо true, либо false.
@Override public boolean equals(Object o) {
if (!(o instanceof User))
return false;
return user.getSsoId().equals((User)o.getSsoId());
}
Я чувствую, что это неправильная реализация, хотя она верна в отношении бизнес-правил. Приведенная выше реализация вернет true для двух объектов с одинаковым идентификатором sso, но с разными значениями, скажем, name или email или обоих. Должен ли я изменить свой контракт на равенство, чтобы проверить равенство всех полей? Что вы предлагаете