Sobes.tech
Junior — Middle

Come implementare correttamente i metodi hashCode e equals in una classe?

sobes.tech AI

Risposta dell'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. Реализация должна учитывать все поля, которые влияют на логическое равенство объектов.