Junior — Middle
V jakých situacích je třeba přepsat metodu equals v Java pro správné porovnání objektů?
sobes.tech AI
Odpověď od AI
Metoda equals v jazyce Java by měla být přepsána, když chcete definovat vlastní kritéria rovnosti objektů vaší třídy, odlišná od standardního porovnání podle odkazu (které je implementováno v Object).
To je obzvláště důležité, pokud jsou objekty vaší třídy logicky považovány za rovné, když odpovídající pole souhlasí, například ve třídě Person jsou objekty považovány za rovné, pokud se shodují jméno a datum narození.
Přepsání metody equals je nutné, aby:
- Správně porovnávalo objekty podle obsahu.
- Zajistilo správnou funkčnost kolekcí jako HashSet nebo HashMap, které používají equals k určení jedinečnosti prvků.
Při přepisování equals je také důležité přepsat metodu hashCode, aby byl dodržen kontrakt mezi těmito metodami.
Příklad přepsání metod equals a 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);
}