Sobes.tech
Junior — Middle

Dlaczego ważne jest nadpisanie metody equals() w swojej klasie?

sobes.tech AI

Odpowiedź od AI

Nadpisanie metody equals() jest ważne dla poprawnego porównywania obiektów po zawartości, a nie po referencji. Domyślnie w Javie metoda equals() porównuje referencje (czyli sprawdza, czy zmienne wskazują na ten sam obiekt).

Jeśli chcesz uznać dwa obiekty za równe, gdy ich określone pola (np. identyfikator, nazwa itp.) są takie same, musisz nadpisać equals().

Przykład:

@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 nadpisania equals(), kolekcje takie jak HashSet lub metody wyszukiwania mogą działać niepoprawnie.