等于数组的方法实现 - 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


提前致谢!


梵蒂冈之花
浏览 88回答 2
2回答

HUX布斯

我很惊讶这个等于方法有效。即使它使用.equals,它不再以旧形式存在,因为我已经覆盖了它您已经重写了类的方法。在你的实现中,你正在调用数组的元素,这意味着你正在调用类的方法,它是数组的元素类型。例如,如果 是 ,则调用 的 。equalsarrayClassequalsequalsequalselementselementsString[]elements[i].equals()Stringequals

慕容708150

for 循环中的等于调用不会调用您的等于实现。您的实现位于 Array 类之上,for 循环中的等于 将调用您存储在数组中的任何类类型的等于实现。此外,这段代码未进行优化。您可以删除 for 循环中的空块:for(int i = 0; i < this.number; i++){&nbsp; &nbsp; if (!this.elements[i].equals(that.elements[i])) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;&nbsp; &nbsp; }}return true;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java