比较一个对象为null!

fen*_*nec 12 java null object

我试图验证一个对象是否为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());
         }
     }
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

搜索客户渲染错误:null class java.lang.NullPointerException

我以为我正在用if和else循环来考虑这种可能性.任何帮助,将不胜感激.

Suv*_*apa 24

在if语句中尝试c!= null.您不是在比较对象本身,而是在比较它们的引用.


Gre*_*ver 11

!c.equals(null)
Run Code Online (Sandbox Code Playgroud)

该行在c上调用equals方法,如果c为null,那么您将得到该错误,因为您无法在null上调用任何方法.相反,你应该使用

c != null
Run Code Online (Sandbox Code Playgroud)


Ale*_*lli 10

使用c == null,因为您要比较引用,而不是对象.


Mid*_*hat 8

使用c == null

equals方法(通常)需要一个类型为customer的参数,并且可能正在调用该对象上的某些方法.如果该对象为null,您将获得NullPointerException.

c也可能为null,并且c.equals调用可能抛出异常而不管传递的对象如何