Junior — Middle
Proč je důležité přepsat metodu equals() ve své třídě?
sobes.tech AI
Odpověď od AI
Přepsání metody equals() je důležité pro správné porovnávání objektů podle obsahu, nikoli podle odkazu. Ve výchozím nastavení v Javě metoda equals() porovnává odkazy (tj. kontroluje, zda proměnné odkazují na stejný objekt).
Pokud chcete považovat dva objekty za rovné, když odpovídají určitá pole (například identifikátor, jméno atd.), je třeba equals() přepsat.
Pří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 přepsání equals() mohou kolekce jako HashSet nebo metody hledání fungovat nesprávně.