Junior — Middle
In welchen Situationen sollte die Methode equals in Java überschrieben werden, um eine korrekte Objektvergleiche durchzuführen?
sobes.tech KI
Antwort von AI
Die Methode equals in Java sollte überschrieben werden, wenn Sie eigene Kriterien für die Gleichheit von Objekten Ihrer Klasse festlegen möchten, die von dem Standardvergleich nach Referenz abweichen (der in Object implementiert ist).
Dies ist besonders wichtig, wenn Objekte Ihrer Klasse logisch als gleich angesehen werden, wenn bestimmte Felder übereinstimmen, zum Beispiel in der Klasse Person, werden Objekte als gleich betrachtet, wenn Name und Geburtsdatum übereinstimmen.
Das Überschreiben von equals ist notwendig, um:
- Objekte korrekt anhand ihres Inhalts zu vergleichen.
- Das ordnungsgemäße Funktionieren von Sammlungen wie HashSet oder HashMap zu gewährleisten, die equals zur Bestimmung der Einzigartigkeit von Elementen verwenden.
Beim Überschreiben von equals ist es auch wichtig, hashCode zu überschreiben, um den Vertrag zwischen diesen Methoden einzuhalten.
Beispiel für das Überschreiben von equals und 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);
}