Heim > Java > javaLernprogramm > „getClass()' vs. „instanceof' in „equals()': Was sollten Sie verwenden?

„getClass()' vs. „instanceof' in „equals()': Was sollten Sie verwenden?

Linda Hamilton
Freigeben: 2024-12-03 10:59:08
Original
698 Leute haben es durchsucht

`getClass()` vs. `instanceof` in `equals()`: Which Should You Use?

Sollten Sie „getClass()“ oder „instanceof“ in Ihrer .equals()-Methode verwenden?

Beim Generieren von .equals() Bei Verwendung von Eclipse-Methoden haben Sie die Möglichkeit, zum Vergleichen von Typen „instanceof“ oder „.getClass()“ zu verwenden. Standardmäßig verwendet Eclipse „.getClass()“, sodass sich viele Programmierer fragen, ob sie zu „instanceof“ wechseln sollten.

Was ist der Unterschied?

.getClass() vergleicht direkt den Laufzeittyp zweier Objekte, während instanceof prüft, ob ein Objekt vorhanden ist ist eine Instanz einer bestimmten Klasse oder Schnittstelle. Zum Beispiel:

if (getClass() != obj.getClass()) // Using getClass()
if (!(obj instanceof MyClass)) // Using instanceof
Nach dem Login kopieren

Welches sollten Sie verwenden?

Laut Java-Experte Josh Bloch ist „instanceof“ der bevorzugte Ansatz, da es keine Einschränkungen gibt Gleichheit mit dem gleichen Laufzeittyp. Dies bedeutet, dass Sie eine Klasse erweitern und Methoden hinzufügen können, ohne die Gleichheit von Objekten zu beeinträchtigen, die dieselben wichtigen Aspekte aufweisen.

Darüber hinaus entspricht es dem Liskov-Substitutionsprinzip, das besagt, dass eine Unterklasse verwendet werden können sollte anstelle seiner Superklasse, ohne den Code zu beschädigen. Die Verwendung von „.getClass()“ verstößt gegen dieses Prinzip und führt zu unerwartetem Verhalten in Sammlungen wie HashTable.

Zusammenfassend bietet „instanceof“ mehr Flexibilität und wird für .equals()-Methoden empfohlen. Während Sie die Prüfung „if (obj == null)“ mit „instanceof“ entfernen können, ist es im Allgemeinen aus Gründen der Klarheit und Vollständigkeit ratsam, sie beizubehalten.

Das obige ist der detaillierte Inhalt von„getClass()' vs. „instanceof' in „equals()': Was sollten Sie verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage