Junior — Middle
Prečo je dôležité prepísať metódu equals() vo svojej triede?
sobes.tech AI
Odpoveď od AI
Prepísanie metódy equals() je dôležité pre správne porovnávanie objektov podľa obsahu, nie podľa odkazu. Vo výchozom nastavení v Jave, metóda equals() porovnáva odkazy (t.j. kontroluje, či premenné ukazujú na ten istý objekt).
Ak chcete považovať dva objekty za rovnaké, keď sa zhodujú určité polia (napríklad identifikátor, meno atď.), musíte equals() prepísať.
Príklad:
@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);
}
Bez prepísania equals() môžu kolekcie ako HashSet alebo metódy vyhľadávania fungovať nesprávne.