gpt4 book ai didi

java - 覆盖 User 类中的 equals 方法

转载 作者:行者123 更新时间:2023-11-30 09:15:52 27 4
gpt4 key购买 nike

我正在处理现有项目。我有以下用户类的 equals 方法。当我比较相等和相等时,我在

if (getClass() != other.getClass()) {
return false;
}

完整的 equals 代码:

@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}

if (obj == null) {
return false;
}

User other = (User) obj;
if (getClass() != other.getClass()) {
return false;
}

if (this.getUserId() == null) {
if (other.getUserId() != null) {
return false;
}
} else if (!this.getUserId().equals(other.getUserId())) {
return false;
}

return true;
}

我需要在这里检查类类型吗?如果是,为什么我的用户类别不同?为什么我不能像下面这样检查类类型?

if (!(obj instanceof User)){
return false;
}

最佳答案

if (getClass() != other.getClass()) {
return false;
}

此检查应在类型转换之前进行:

User other = (User) obj;

instanceofgetClass() 的区别在于后者确保类型不是子类型。所以:

User user = new SubUser();
boolean a = user instanceof User;
boolean b = user.getClass() == User.class;
System.out.println(a);
System.out.println(b);

将打印:

true
false

关于java - 覆盖 User 类中的 equals 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19677793/

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