Sobes.tech
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);
}