【发布时间】:2019-05-19 07:13:24
【问题描述】:
我为一个类写了一个简单的 equals() 方法:
@Override
public boolean equals(Object obj) {
if(obj instanceof Cl) {
Cl u = (Cl)obj;
return u.i == i;
} else {
return false;
}
}
据我所知,如果我想比较类对象是否等于空对象,由于 instanceof,这将返回 false,但根据我的 uni 老师的说法,这是一个糟糕的实现,因为缺少空检查。谁能帮我确认一下我的理论是否正确?
【问题讨论】:
-
不会抛出 NPE 吗?
-
你的uni老师不正确,
obj instaneof是null安全测试(因为null只是NullType的一个实例)。 stackoverflow.com/a/2707333/2970947 -
cl应该是Cl甚至更好:相关名称。请遵循 Java 命名约定:包、属性、变量、参数、方法必须以 lowerCase 开头,而类、接口应以 UpperCase 开头 -
@ElliottFrisch
null instanceof NullType给了我错误;(虽然没有 NPE -
i的类型是什么?如果它不是原始类型,您可能还想使用equals。否则这对我来说很好。