Umgang mit Null-Objekten bei Gleichheitsüberprüfungen
Im vorherigen Schritt haben wir erfolgreich die equals()
-Methode in unserer Person
-Klasse überschrieben, um Objekte basierend auf ihren Attributen zu vergleichen. Ein entscheidender Aspekt beim Schreiben robuster equals()
-Methoden ist der Umgang mit potenziellen null
-Werten. Wenn Sie versuchen, eine Methode auf einem null
-Objekt aufzurufen, führt dies zu einer NullPointerException
, einem häufigen Fehler in Java.
Unsere überschriebene equals()
-Methode in Person.java
enthält bereits eine Prüfung auf null
: if (obj == null || getClass() != obj.getClass())
. Dies ist die Standardmethode, um den Fall zu behandeln, dass das zu vergleichende Objekt null
ist.
In diesem Schritt werden wir demonstrieren, was passiert, wenn man ein Objekt mit null
vergleicht, und bestätigen, dass unsere equals()
-Methode diesen Fall korrekt behandelt.
-
Stellen Sie sicher, dass Sie sich im Verzeichnis ~/project
in der WebIDE befinden.
-
Öffnen Sie die Datei PersonEqualityDemo.java
, die Sie im vorherigen Schritt erstellt haben.
-
Fügen Sie die folgenden Zeilen in die main
-Methode nach den bestehenden Vergleichs-Anweisungen ein:
System.out.println("\nComparing with null:");
System.out.println("person1.equals(null): " + person1.equals(null));
Dieser Code fügt einfach einen Vergleich von person1
mit null
hinzu.
-
Speichern Sie die Datei PersonEqualityDemo.java
.
-
Öffnen Sie das Terminal. Stellen Sie sicher, dass Sie sich in ~/project
befinden.
-
Kompilieren Sie die geänderte Datei PersonEqualityDemo.java
:
javac PersonEqualityDemo.java
Denken Sie daran, dass Sie nur die Dateien neu kompilieren müssen, die Sie geändert haben. Da Person.java
in diesem Schritt nicht geändert wurde, müssen wir nur PersonEqualityDemo.java
kompilieren.
-
Führen Sie das kompilierte Programm aus:
java PersonEqualityDemo
Sie sollten jetzt die vorherige Ausgabe gefolgt von dem neuen Vergleich mit null
sehen:
Comparing Person objects:
person1 == person2: false
person1.equals(person2): true
person1 == person3: false
person1.equals(person3): false
person1 == person4: true
person1.equals(person4): true
Comparing with null:
person1.equals(null): false
Die Ausgabe person1.equals(null): false
bestätigt, dass unsere überschriebene equals()
-Methode den Vergleich mit null
korrekt behandelt und false
zurückgibt, ohne eine NullPointerException
zu werfen. Dies liegt daran, dass die Zeile if (obj == null || getClass() != obj.getClass())
in der equals()
-Methode unserer Person
-Klasse auf null
prüft, bevor versucht wird, auf Attribute von obj
zuzugreifen.
Der Umgang mit null
ist ein kritischer Teil beim Schreiben robuster Java-Code, insbesondere bei der Behandlung von Objektvergleichen. Fügen Sie immer eine null
-Prüfung am Anfang Ihrer überschriebenen equals()
-Methode ein.