Sobes.tech
Junior — Middle

Miért fontos felülírni az equals() metódust a saját osztályodban?

sobes.tech MI

Válasz az MI-től

Az equals() metódus felülírása fontos a objektumok tartalom szerinti helyes összehasonlításához, nem referencia szerint. Alapértelmezés szerint Java-ban az equals() metódus referencia szerint hasonlít (azaz ellenőrzi, hogy a változók ugyanarra a objektumra mutatnak-e).

Ha két objektumot egyenlőnek akarsz tekinteni, amikor bizonyos mezőik (például azonosító, név stb.) egyeznek, felül kell írni az equals()-t.

Példa:

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

Az equals() felülírása nélkül az olyan kollekciók, mint a HashSet, vagy keresési módszerek hibásan működhetnek.