Bedeutung der Objects.deEpEqals-Methode

8

Die Frage bezieht sich auf statische Methoden Objects.deepEquals class (seit Java 7 ):

%Vor%

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?

    
Andremoniy 30.12.2015, 09:47
quelle

2 Antworten

14

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:

Object.deepEquals

    
Berger 30.12.2015, 09:53
quelle
1

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

     
  1. Durchläuft die Eingabe-Arrays, erhält jedes Paar
  2.   
  3. Analysiert den Typ jedes Paares
  4.   
  5. Delegiert die gleiche Entscheidungslogik zu einer der überladenen   Arrays.equals, wenn sie eines der primitiven Arrays
  6. sind   
  7. Delegiert rekursiv zu Arrays.deeepEquals, wenn es sich um ein Objektarray handelt
  8.   
  9. Ruft das entsprechende Objekt für jedes andere Objekt gleich
  10. auf   
    
Rahul Tripathi 30.12.2015 09:53
quelle

Tags und Links