[英]Equals method implementation for arrays - Java
我很驚訝這個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
,這意味着您要調用類的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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.