Sobes.tech
Junior — Middle

Bir sinifdə hashCode və equals metodlarını düzgün şəkildə necə həyata keçirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

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