我很惊讶这个equals
方法有效..即使它使用的.equals
不再以旧形式存在,因为我已经覆盖了它...?
我的意思是,如果你看代码,比较我正在使用.equals
的两个数组元素。
但是..如果我覆盖了equals方法,.equals
不会只使用我的覆盖方法吗?我有点困惑,我真的很感激有关如何工作的一些解释。
public boolean equals(Object other) {
if (other instanceof arrayClass) {
arrayClass that = (arrayClass) other;
if (this.number == that.number) {
for (int i = 0; i < this.number; i++) {
if (this.elements[i].equals(that.elements[i])) {
}
else {
return false;
}
}
return true;
}
else {
return false;
}
}
else {
return false;
}
}
注意:number
表示数组长度。
提前致谢!
我很惊讶这等于方法工作..即使它使用.equals不再存在它的旧形式了,因为我已经覆盖了它
你已经覆盖了equals
类的arrayClass
方法。在你的equals
实现中,你为数组的元素调用equals
,这意味着你正在调用类的equals
方法,它是elements
数组的元素类型。例如,如果elements
是String[]
,elements[i].equals()
称String
的equals
。
for循环中的equals调用不会调用equals实现。您的实现在Array类上,for循环中的equals调用您在数组中存储的任何类类型的equals实现。
此外,这段代码没有优化。您可以删除for循环中的空块:
for(int i = 0; i < this.number; i++){
if (!this.elements[i].equals(that.elements[i])) {
return false;
}
}
return true;