Junior — Middle
W jakich sytuacjach należy nadpisać metodę equals w Java, aby poprawnie porównywać obiekty?
sobes.tech AI
Odpowiedź od AI
Metoda equals w Java powinna być nadpisana, gdy chcesz zdefiniować własne kryteria równości obiektów Twojej klasy, różne od standardowego porównania po referencji (które jest zaimplementowane w Object).
Jest to szczególnie ważne, jeśli obiekty Twojej klasy są logicznie uważane za równe, gdy odpowiadające im pola są takie same, na przykład w klasie Person obiekty są uważane za równe, jeśli imię i data urodzenia są takie same.
Nadpisanie equals jest konieczne, aby:
- Poprawnie porównywać obiekty według zawartości.
- Zapewnić poprawne działanie kolekcji takich jak HashSet czy HashMap, które używają equals do określenia unikalności elementów.
Przy nadpisywaniu equals ważne jest również nadpisanie hashCode, aby zachować kontrakt między tymi metodami.
Przykład nadpisania equals i hashCode:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}
@Override
public int hashCode() {
return Objects.hash(name, birthDate);
}