2009-06-15 22 views
9

estoy tratando de verificar si un objeto es nulo o no y estoy usando esta sintaxis:¡compara un objeto con nulo!

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()); 
     } 
    } 

consigo la siguiente excepción:

search customer rendering error: null class java.lang.NullPointerException

pensé que estaba teniendo en cuenta esta posibilidad con mi ciclo if if else. Cualquier ayuda sería apreciada.

+1

ventaja. if y else no se llama bucle. es una condición – Midhat

Respuesta

21

Pruebe c! = Null en su sentencia if. No estás comparando los objetos, estás comparando sus referencias.

10

Use c == null, ya que está comparando referencias, no objetos.

8

Uso c == null

El método es igual a (por lo general) espera un argumento de tipo cliente, y puede estar llamando algunos métodos en el objeto. Si ese objeto es nulo, obtendrá la NullPointerException.

También C podría ser nula y c.equals llamada podría estar lanzando la excepción, con independencia del objeto pasado

+0

más clara que otras – Gattsu

11
!c.equals(null) 

Esa línea está llamando el método equals en c, y si c es nulo entonces te obtienes ese error porque no puedes llamar a ningún método en nulo. su lugar se debe utilizar

c != null 
3

Lo más probable es objeto c es nulo en este caso.

Es posible que desee anular la implementación predeterminada de iguales para el Cliente en caso de que deba comportarse de manera diferente.

También asegúrese de que el objeto pasado no sea nulo antes de invocar las funciones en él.

-2

si C objeto que tiene valor nulo a continuación, siguiente declaración se utiliza para comparar el valor nulo:

if (c.toString() == null) { 

    System.out.println("hello execute statement"); 

} 
+2

No. 'c' en sí mismo es nulo, por lo que obtendría una NullPointerException. – user1071777

Cuestiones relacionadas