从我们的后端生成的所有 webservice-stubs 都有一个类似于这个的 equals 方法:
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
吗?我只是不明白。它不在课堂上的其他地方使用。在我看来,在计算“平等”期间它并不完全为空。然而 equals 是声明的synchronized
。因此,在任何给定时间只能有一个线程在其中。我看不出来,为什么if (__equalsCalc != null)
应该永远是真的。
请告诉我我愚蠢的误解;-)
编辑:我是该项目的新手,因此我的回答可能是错误的。但是如果我正确地跟踪它,该方法是由axis-wsdl2java生成的