比较一个对象为null!

时间:2009-06-15 03:48:41

标签: java object null

我正在尝试验证对象是否为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循环这种可能性。任何帮助将不胜感激。

7 个答案:

答案 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");

}