Sobes.tech
Junior — Middle

Hogyan van megvalósítva az equals metódus Java nyelven, és hogyan használják az objektumok összehasonlítására?

sobes.tech MI

Válasz az MI-től

Java-ban az equals() metódus az Object osztályban van definiálva, és az objektumok logikai egyenlőség szerinti összehasonlítására szolgál. Alapértelmezés szerint referencia szerint hasonlít (azaz ellenőrzi, hogy két változó ugyanarra az objektumra mutat-e).

Az objektumok tartalmának helyes összehasonlításához az osztályok általában felülírják az equals() metódust, hogy összehasonlítsák az objektum jelentős mezőit.

Az equals() felülírásának példája:

@Override
public boolean equals(Object obj) {
    if (this == obj) return true; // identitás ellenőrzése
    if (obj == null || getClass() != obj.getClass()) return false;
    MyClass other = (MyClass) obj;
    return Objects.equals(field1, other.field1) && field2 == other.field2;
}

Fontos, hogy az equals() felülírásakor a hashCode()-t is felül kell írni, hogy az objektumok helyesen működjenek a kollekciókban, például a HashMap-ben.

Használat:

MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
    // az objektumok tartalom szerint egyenlőnek tekinthetők
}