Sobes.tech
Junior — Middle

Miks on oluline oma klassis meetodit equals() üle kirjutada?

sobes.tech AI

Vastus AI-lt

equals() meetodi üleviimine on oluline objektide õige võrdlemise jaoks sisu järgi, mitte viite järgi. Java-s võrreldab equals() meetod vaikimisi viiteid (st kontrollib, kas muutujad osutavad samale objektile).

Kui soovite pidada kahte objekti võrdseteks, kui teatud väljad (näiteks identifikaator, nimi jne) kattuvad, peate equals() üleviima.

Näide:

@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);
}

Ilma equals() üleviimata võivad sellised kogumid nagu HashSet või otsingumeetodid töötada valesti.