バックエンドから生成されたすべての webservice-stubs には、次のような equals-method があります。
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;
}
誰かが私にその目的を説明してもらえ__equalsCalc
ますか? 私はそれを理解していません。クラスの他の場所では使用されません。私の見方では、「平等」の計算中に正確にはnullではありません。ただし、equals は宣言されてsynchronized
います。したがって、常に 1 つのスレッドしか存在できません。私にはわかりませんif (__equalsCalc != null)
。
私の愚かな誤解を教えてください;-)
編集:私はプロジェクトに不慣れなので、私の答えは間違っているかもしれません。しかし、正しくトレースすると、メソッドは axis-wsdl2java によって生成されます