2010-03-31 18 views
6

El primer índice se establece en nulo (vacío), pero no imprime el resultado correcto, ¿por qué?¿Por qué el trabajo list.get (0) .equals (null) no funciona?

//set the first index as null and the rest as "High" 
String a []= {null,"High","High","High","High","High"}; 

//add array to arraylist 
ArrayList<Object> choice = new ArrayList<Object>(Arrays.asList(a)); 

for(int i=0; i<choice.size(); i++){ 
    if(i==0){ 
     if(choice.get(0).equals(null)) 
      System.out.println("I am empty"); //it doesn't print this output 
    } 
} 
+1

Un truco: 'System.out.println (Arrays.asList (nulo," Alto "," Alto "," Alto "," Alto "," Alto "));' Hace lo que quiere sin todo eso código extra Digo que es el "mismo" porque probablemente no sabía que podía imprimir nulos – Pyrolistical

Respuesta

6

Creo que lo que quiere hacer es cambiar,

if(choice.get(0).equals(null)) 

a

if(choice.get(0) == null)) 
+0

Muchas gracias :-). – Jessy

+0

No hay problema, consulte la respuesta de cletus para obtener una explicación más exhaustiva de por qué no funcionó como se esperaba. –

6

que desea buscar:

for (int i=0; i<choice.size(); i++) { 
    if (i==0) { 
    if (choice.get(0) == null) { 
     System.out.println("I am empty"); //it doesn't print this output 
    } 
    } 
} 

La expresión choice.get(0).equals(null) debe lanzar una NullPointerException porque choice.get(0) es null e intenta invocar una función en él. Por este motivo, anyObject.equals(null)siempre devuelve false.

+0

muchas gracias :-) – Jessy

+0

Si bien devolver true para 'igual (nulo)' infringe el contrato de la API, de hecho es bastante posible. –