Sobes.tech
Junior — Middle

În ce situații trebuie să suprascrii metoda equals în Java pentru o comparare corectă a obiectelor?

sobes.tech AI

Răspuns de la AI

Metoda equals în Java trebuie să fie suprascrisă atunci când doriți să definiți propriile criterii de egalitate ale obiectelor din clasa dvs., diferite de comparația standard după referință (care este implementată în Object).

Acest lucru este deosebit de important dacă obiectele clasei dvs. sunt considerate egal logic atunci când anumite câmpuri coincid, de exemplu, în clasa Person, obiectele sunt considerate egale dacă numele și data nașterii coincid.

Suprascrierea metodei equals este necesară pentru:

  • Compararea corectă a obiectelor după conținut.
  • Asigurarea funcționării corecte a colecțiilor precum HashSet sau HashMap, care utilizează equals pentru a determina unicitatea elementelor.

Atunci când suprascrieți equals, este, de asemenea, important să suprascrieți hashCode pentru a respecta contractul dintre aceste metode.

Exemplu de suprascriere a equals și 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);
}