Sobes.tech
Back to questions
Junior — Middle
141

Как правильно реализовать методы hashCode и equals в классе?

Companies where asked
Prooftech
СБЕРСБЕР
Норд Клан
Акселератор возможностей
RevolutRevolut
ИннотехИннотех
ТОП КЕЙС
Альфа-БанкАльфа-Банк
OZONOZON
IT OneIT One
ОТП БанкОТП Банк

Answer from AI

sobes.tech AI

Методы hashCode и equals в Java должны быть реализованы так, чтобы:

  • Если два объекта равны по equals, то их hashCode тоже должен быть одинаковым.
  • equals должен быть рефлексивным, симметричным, транзитивным и консистентным.

Пример правильной реализации для класса с двумя полями id и name:

@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    MyClass myClass = (MyClass) o;
    return Objects.equals(id, myClass.id) && Objects.equals(name, myClass.name);
}

@Override
public int hashCode() {
    return Objects.hash(id, name);
}

Используйте Objects.equals и Objects.hash для удобства и безопасности от NullPointerException. Реализация должна учитывать все поля, которые влияют на логическое равенство объектов.