Alle generierten Webservice-Stubs aus unserem Backend haben ein Gleichheits-Verfahren ähnlich wie diese:generiert Gleichen in Webservice Stub
private java.lang.Object __equalsCalc = null;
public synchronized boolean equals(java.lang.Object obj) {
if (!(obj instanceof PropertyData)) return false;
PropertyData other = (PropertyData) obj;
if (obj == null) return false;
if (this == obj) return true;
if (__equalsCalc != null) {
return (__equalsCalc == obj);
}
__equalsCalc = obj;
boolean _equals;
_equals = true &&
((this.key==null && other.getKey()==null) ||
(this.key!=null &&
this.key.equals(other.getKey()))) &&
((this.value==null && other.getValue()==null) ||
(this.value!=null &&
this.value.equals(other.getValue())));
__equalsCalc = null;
return _equals;
}
Kann jemand bitte die purpoise von __equalsCalc
mir das erklären? Ich verstehe es einfach nicht. Es wird nirgendwo sonst in der Klasse verwendet. So wie ich es sehe, ist es bei der Berechnung der "Gleichheit" nicht genau null. Jedoch wird der Wert synchronized
angegeben. Daher kann immer nur ein Thread darin enthalten sein. Ich kann nicht sehen, warum if (__equalsCalc != null)
jemals wahr sein sollte.
Bitte zeigen Sie mir mein dummes Missverständnis ;-)
EDIT: Ich bin für das Projekt neu und daher kann meine Antwort falsch sein. Aber wenn ich es richtig trage, wird die Methode von axis-wsdl2java erzeugt
zu posten, nehme ich an, es hat etwas mit Rekursion zu tun ... Aber ich kann nicht herausfinden, was genau es zu erreichen versucht –
BTW, scheint Wie wird Code von WSDL2Java generiert? (http://www.google.com/search?q=__equalsCalc) –
Glauben Sie, dass der zweite Null-Check überflüssig ist ?: if (obj == null) return false; http://codereview.stackexchange.com/questions/102669/null-check-in-equals-implementation –