我很惊讶这种方法有效。即使它正在使用的旧形式不再存在,因为我已经覆盖了它..?equals.equals我的意思是,如果你看一下代码,比较我正在使用的两个数组元素。.equals但。。如果我覆盖了 equals 方法,难道不会只使用我的覆盖方法吗?我有点困惑,我真的非常感谢一些关于它如何工作的解释。.equalspublic 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提前致谢!
2 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
我很惊讶这个等于方法有效。即使它使用.equals,它不再以旧形式存在,因为我已经覆盖了它
您已经重写了类的方法。在你的实现中,你正在调用数组的元素,这意味着你正在调用类的方法,它是数组的元素类型。例如,如果 是 ,则调用 的 。equals
arrayClass
equals
equals
equals
elements
elements
String[]
elements[i].equals()
String
equals
慕容708150
TA贡献1831条经验 获得超4个赞
for 循环中的等于调用不会调用您的等于实现。您的实现位于 Array 类之上,for 循环中的等于 将调用您存储在数组中的任何类类型的等于实现。
此外,这段代码未进行优化。您可以删除 for 循环中的空块:
for(int i = 0; i < this.number; i++){
if (!this.elements[i].equals(that.elements[i])) {
return false;
}
}
return true;
添加回答
举报
0/150
提交
取消