Sobes.tech
Junior

Co dělá metoda equals()?

sobes.tech AI

Odpověď od AI

Metoda equals() v Javě porovnává dva objekty, zda jsou si rovny.

Ve výchozím nastavení (v třídě Object) kontroluje, zda jsou reference na objekty stejné (odkazují na stejný exemplář v paměti).

Třídy mohou tuto metodu přepsat, aby určily logickou rovnost objektů na základě jejich obsahu (například dva objekty String jsou považovány za rovné, pokud obsahují stejnou sekvenci znaků, i když jsou to různé instance).

Při přepisování equals() je také nutné přepsat metodu hashCode(), aby bylo zachováno následující pravidlo: pokud jsou dva objekty podle equals() rovné, jejich hashCode() musí vracet stejné hodnoty.

Příklad přepsání:

class MyClass {
    private int value;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Porovnání odkazů
        if (o == null || getClass() != o.getClass()) return false; // Kontrola null a typů
        MyClass myClass = (MyClass) o; // Přetypování
        return value == myClass.value; // Logické porovnání podle pole value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Generování hash kódu
    }
}