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.