Sobes.tech
Junior

Ką daro metodas equals()?

sobes.tech AI

Atsakymas iš AI

Java equals() metodas lygina du objektus, kad nustatytų jų lygybę.

Pagal numatytuosius nustatymus (klase Object) jis tikrina, ar nuorodos į objektus yra tokios pačios (ar nurodo į tą patį pavyzdį atmintyje).

Klasės gali perrašyti šį metodą, kad nustatytų loginę objektų lygybę remiantis jų turiniu (pavyzdžiui, du String objektai laikomi lygiais, jei jie turi tą pačią simbolių seką, net jei tai skirtingi pavyzdžiai).

Perrašant equals() taip pat būtina perrašyti hashCode() metodą, kad būtų laikomasi šios sutarties: jei du objektai yra lygūs pagal equals(), jų hashCode() turi grąžinti tas pačias reikšmes.

Pavyzdys:

class MyClass {
    private int value;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Nuorodų palyginimas
        if (o == null || getClass() != o.getClass()) return false; // Null ir tipų patikrinimas
        MyClass myClass = (MyClass) o; // Tipas
        return value == myClass.value; // Loginė palyginimas
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Hash kodo generavimas
    }
}