Junior — Middle
Milyen helyzetekben kell felülírni az equals metódust Java-ban az objektumok helyes összehasonlításához?
sobes.tech MI
Válasz az MI-től
A Java-ban az equals metódust felül kell írni, amikor saját kritériumokat szeretnél meghatározni az osztályod objektumainak egyenlőségére, amelyek eltérnek az alapértelmezett referencia szerinti összehasonlítástól (amely az Object-ben van implementálva).
Ez különösen fontos, ha az osztályod objektumait logikailag egyenlőnek tekinted, amikor bizonyos mezők egyeznek, például a Person osztályban, az objektumokat akkor tekintjük egyenlőnek, ha a név és a születési dátum megegyezik.
Az equals felülírása szükséges ahhoz, hogy:
- Helyesen összehasonlítsuk az objektumokat tartalom szerint.
- Biztosítsuk a HashSet vagy HashMap kollekciók helyes működését, amelyek az equals-t használják az elemek egyediségének meghatározására.
Az equals felülírásakor fontos a hashCode metódust is felülírni, hogy betartsuk ezeket a metódusokat összekötő szerződést.
Az equals és hashCode felülírásának példája:
@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);
}