Sobes.tech
Junior — Middle

В кои ситуации трябва да презапишете метода equals в Java за правилно сравняване на обекти?

sobes.tech AI

Отговор от AI

Методът equals в Java трябва да бъде презаписан, когато искате да определите собствените си критерии за равенство на обектите на вашия клас, различни от стандартното сравнение по референция (което е реализирано в Object).

Това е особено важно, ако обектите на вашия клас се считат за равни логически, когато определени полета съвпадат, например в класа Person обектите се считат за равни, ако съвпадат името и датата на раждане.

Преписването на equals е необходимо, за да:

  • Правилно сравнявате обектите по съдържание.
  • Осигурите правилната работа на колекции като HashSet или HashMap, които използват equals за определяне на уникалността на елементите.

При преписване на equals е важно също така да препишете hashCode, за да спазите контракта между тези методи.

Пример за преписване на equals и hashCode:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true;
    if (obj == null || getClass() != obj.getClass()) return false;
    Person person = (Person) obj;
    return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}

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