gpt4 book ai didi

java - 为什么 equals 方法必须有相等运算符比较

转载 作者:行者123 更新时间:2023-12-02 06:01:53 25 4
gpt4 key购买 nike

When we override equals method we write the code as below
public boolean equals(Object obj) {
//why do we need to use this piece of code
**if (obj == this) {
return true;
}**

//上面两行有什么帮助。相反,我不想在对象比较上使用 ==//我更喜欢删除上面两行。会引起什么问题吗?

        if (obj == null || obj.getClass() != this.getClass()) {
return false;
}

Person guest = (Person) obj;
return id == guest.id
&& (firstName == guest.firstName
|| (firstName != null && firstName.equals(guest.getFirstName())))
&& (lastName == guest.lastName
|| (lastName != null && lastName .equals(guest.getLastName())));
}

最佳答案

性能改进以及一些逻辑意义。

如果你删除它,没有什么坏处。

但是,如果两者都指向同一实例,则检查同一实例上的条件是没有意义的。

如果obj == this,它们总是true。想一想。

关于java - 为什么 equals 方法必须有相等运算符比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22603164/

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