Sobes.tech
Junior

Čo robí metóda equals()?

sobes.tech AI

Odpoveď od AI

Metóda equals() v Jave porovnáva dva objekty, či sú rovnaké.

Predvolene (v triede Object) kontroluje, či referencie na objekty ukazujú na ten istý exemplár v pamäti (čiže či odkazujú na rovnaký objekt).

Triedy môžu túto metódu prepísať, aby určili logickú rovnosť objektov na základe ich obsahu (napríklad, dva objekty String sa považujú za rovnaké, ak obsahujú rovnakú sekvenciu znakov, aj keď sú to rôzne inštancie).

Pri prepísaní equals() je tiež potrebné prepísať metódu hashCode(), aby sa zachovalo nasledujúce pravidlo: ak sú dva objekty rovnaké podľa equals(), ich hashCode() musia vracať rovnaké hodnoty.

Príklad prepísania:

class MyClass {
    private int value;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Porovnanie referencií
        if (o == null || getClass() != o.getClass()) return false; // Kontrola null a typov
        MyClass myClass = (MyClass) o; // Pretypovanie
        return value == myClass.value; // Logické porovnanie podľa poľa value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Generovanie hash kódu
    }
}