我正在尝试验证对象是否为null,我使用的是这种语法:
void renderSearch(Customer c){
System.out.println("search customer rendering>...");
try {
if(!c.equals(null)){
System.out.println("search customer found...");
}else{
System.out.println("search customer not found...");
}
} catch (Exception e) {
System.err.println ("search customer rendering error: "
+ e.getMessage()+"-"+e.getClass());
}
}
我得到以下异常:
搜索客户呈现错误:null class java.lang.NullPointerException
我以为我正在考虑使用if和else循环这种可能性。任何帮助将不胜感激。
答案 0 :(得分:23)
在if语句中尝试c!= null。你不是在比较对象本身,而是在比较他们的参考文献。
答案 1 :(得分:11)
!c.equals(null)
该行在c上调用equals方法,如果c为null,那么你将得到该错误,因为你不能在null上调用任何方法。 相反,你应该使用
c != null
答案 2 :(得分:10)
使用c == null
,因为您要比较引用,而不是对象。
答案 3 :(得分:8)
使用c == null
equals方法(通常)需要一个类型为customer的参数,并且可能正在调用该对象的某些方法。如果该对象为null,则将获得NullPointerException。
c也可能为null,而c.equals调用可能会抛出异常而不管传递的对象是什么
答案 4 :(得分:3)
在这种情况下,很可能Object c为null。
您可能希望覆盖Customer的equals的默认实现,以防您需要采用不同的行为。
在调用其上的函数之前,还要确保传递的对象不为null。
答案 5 :(得分:0)
现实是,当c为null时,您尝试执行null.equals,因此会生成异常。进行比较的正确方法是“ null” .equals(c)。
答案 6 :(得分:-2)
如果C对象具有空值,则后面的语句用于比较空值:
if (c.toString() == null) {
System.out.println("hello execute statement");
}