6

バックエンドから生成されたすべての 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 によって生成されます

4

2 に答える 2