覆盖的 equals() 方法需要空检查吗? (java)
Overwritten equals() method requires null check? (java)
我已经为 class:
写了一个简单的 equals() 方法
@Override
public boolean equals(Object obj) {
if(obj instanceof Cl) {
Cl u = (Cl)obj;
return u.i == i;
} else {
return false;
}
}
据我所知,如果我想比较 class 对象是否等于空对象,这个 returns false 因为 instanceof,但根据我的大学老师的说法,这是一个糟糕的实现,因为缺少空检查。谁能帮我确认一下我的理论是否正确?
我认为,null
检查不是必需的,也不应该存在,因为在这种情况下,如果 obj 是 null
,将不会出现任何编译时错误或任何异常,因为支票 if (obj instaceof C1)
.
我已经为 class:
写了一个简单的 equals() 方法@Override
public boolean equals(Object obj) {
if(obj instanceof Cl) {
Cl u = (Cl)obj;
return u.i == i;
} else {
return false;
}
}
据我所知,如果我想比较 class 对象是否等于空对象,这个 returns false 因为 instanceof,但根据我的大学老师的说法,这是一个糟糕的实现,因为缺少空检查。谁能帮我确认一下我的理论是否正确?
我认为,null
检查不是必需的,也不应该存在,因为在这种情况下,如果 obj 是 null
,将不会出现任何编译时错误或任何异常,因为支票 if (obj instaceof C1)
.