Die Frage bezieht sich auf statische Methoden Objects.deepEquals
class (seit Java 7
):
Wie es in javadoc
dieser Methode heißt:
Gibt "true" zurück, wenn die Argumente untereinander gleich und falsch sind sonst.
Was ich nicht verstehe: Wo ist die Tiefe des Vergleichs? Wie wir in seiner Implementierung sehen können, gibt es nur Referenzvergleiche und innerhalb von Arrays.deepEquals0(a, b)
für einfache Object
und Object
Argumente, die aufgerufen werden
nur: eq = e1.equals(e2);
. Also, in welchem Sinne sind zwei Objekte tief gleich?
Der Vergleich wäre tief , wenn Sie Array-Objekte übergeben haben.
Nicht-Array-Objekte werden nicht tiefer ausgewertet als die, die Sie mit equals
erhalten.
Also ist die Tiefe in Ihrem Fall nicht relevant:
Zwei Nullwerte sind tief gleich. Wenn beide Argumente Arrays sind, Algorithmus in Arrays.deeepEquals wird verwendet, um Gleichheit zu bestimmen. Andernfalls wird die Gleichheit mit der equals-Methode des erstes Argument.
Zitiert von:
Sie können verweisen: Ihre ist tief - Warum Arrays.eepEquals Wenn wir Arrays.equals haben
ArraysDieepEquals sieht wirklich tief aus
Von der Quelle konnten wir das ArrayDeeepEquals verstehen
- Durchläuft die Eingabe-Arrays, erhält jedes Paar
- Analysiert den Typ jedes Paares
- Delegiert die gleiche Entscheidungslogik zu einer der überladenen Arrays.equals, wenn sie eines der primitiven Arrays
sind- Delegiert rekursiv zu Arrays.deeepEquals, wenn es sich um ein Objektarray handelt
- Ruft das entsprechende Objekt für jedes andere Objekt gleich
auf
Tags und Links java