Junior — Middle
In welke situaties moet je de methode equals in Java overschrijven voor een correcte vergelijking van objecten?
sobes.tech AI
Antwoord van AI
De methode equals in Java moet worden overschreven wanneer je je eigen criteria voor gelijkheid van objecten van je klasse wilt definiëren, die afwijken van de standaardreferentievergelijking (die is geïmplementeerd in Object).
Dit is vooral belangrijk als de objecten van je klasse logisch als gelijk worden beschouwd wanneer bepaalde velden overeenkomen, bijvoorbeeld in de klasse Person worden objecten als gelijk beschouwd als de naam en geboortedatum overeenkomen.
Het overschrijven van equals is nodig om:
- Objecten correct te vergelijken op inhoud.
- Een goede werking van collecties zoals HashSet of HashMap te garanderen, die equals gebruiken om de uniciteit van elementen te bepalen.
Bij het overschrijven van equals is het ook belangrijk om hashCode te overschrijven om het contract tussen deze methoden te behouden.
Voorbeeld van het overschrijven van equals en 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);
}