Sobes.tech
Junior — Middle

Cum este implementat metoda equals în Java și cum este folosită pentru compararea obiectelor?

sobes.tech AI

Răspuns de la AI

În Java, metoda equals() este definită în clasa Object și servește pentru compararea obiectelor pentru egalitate logică. În mod implicit, compară referințele (adică verifică dacă două variabile indică același obiect).

Pentru o comparare corectă a conținutului obiectelor, clasele de obicei redefinește metoda equals(), pentru a compara câmpurile semnificative ale obiectelor.

Exemplu de redefinire a equals():

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // verificare de identitate
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

Este important ca, atunci când redefinești equals(), să redefinești și hashCode(), pentru a asigura funcționarea corectă a obiectelor în colecții, de exemplu, în HashMap.

Utilizare:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // obiectele sunt considerate egale în conținut
}