gpt4 book ai didi

Java新手学习多态

转载 作者:行者123 更新时间:2023-12-01 08:09:07 25 4
gpt4 key购买 nike

如果省略第 3-5 行(我对这些行进行了编号),则 equals() 方法将产生相同的输出。这些线有什么意义?

/** Return true if that Beetle has the same parts as this one. */   
public boolean equals(Object that) {
3. if (this == that) {
4. return true;
5. }
if (that == null) {
return false;
}
if (getClass() != that.getClass()) {
return false;
}

Beetle thatBeetle = (Beetle) that;

return body == thatBeetle.body
&& eyes == thatBeetle.eyes
&& feelers == thatBeetle.feelers
&& head == thatBeetle.head
&& legs == thatBeetle.legs
&& tail == thatBeetle.tail;
}

最佳答案

检查 == 引用相等性很快,如果为 true,则对象将与其自身进行比较 - 因此根据定义是相等的。

这通常是比较对象时的第一步,因为它比比较所有细节要快得多。但它更常在调用者/客户端函数中使用,而不是在 equals() 实现中使用。

例如,在线性搜索中:

public int indexOfBeetle (Beetle beetle, List<Beetle> list) {
for (int i = 0; i < list.size(); i++) {
Beetle cand = list.get( i);
if (cand == beetle || cand.equals( beetle))
return i; // Found.
}
// Not Found.
return -1;
}

关于Java新手学习多态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18928070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com