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.