簡體   English   中英

等於數組的方法實現-Java

[英]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數組的元素類型。 例如,如果elementsString[] ,則elements[i].equals()調用Stringequals

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM