Sobes.tech
Junior

Mit csinál az equals() metódus?

sobes.tech MI

Válasz az MI-től

A equals() metódus Java-ban két objektumot összehasonlít az egyenlőség szempontjából.

Alapértelmezés szerint (az Object osztályban) ellenőrzi, hogy a referenciák ugyanarra az objektumra mutatnak-e (ugyanarra a példányra a memóriában).

Az osztályok felülírhatják ezt a metódust az objektumok tartalmán alapuló logikai egyenlőség meghatározására (például két String objektum akkor tekinthető egyenlőnek, ha ugyanaz a karakterlánc van bennük, még akkor is, ha külön példányok).

A equals() felülírásakor szükséges a hashCode() metódust is felülírni, hogy megfeleljen a következő megállapodásnak: ha két objektum egyenlő a equals() szerint, akkor a hashCode() értékeiknek is egyezniük kell.

Példa a felülírásra:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Referencia összehasonlítás
        if (o == null || getClass() != o.getClass()) return false; // Null és típus ellenőrzés
        MyClass myClass = (MyClass) o; // Típuscast
        return value == myClass.value; // Logikai összehasonlítás a value mező alapján
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Hash kód generálása
    }
}