2016-03-14 48 views
0

我試圖用一個新值替換數組中的所有相同元素,下面是我提出的代碼。但是,如果我將空值添加到程序中,則IDE將顯示NullPointerException。這是爲什麼發生?爲什麼下面的程序不能使用空值

public class ReplaceAllOfTheSameElements { 

    public static <E> void replace(List<E> list, E val, E newVal){ 
     for(ListIterator<E> it = list.listIterator(); it.hasNext();){ 

      if(val.equals(it.next())){ 
       it.set(newVal); 
      } 
//   if(val == null ? it.next() == null : val.equals(it.next())){ 
//    it.set(newVal); 
//   } 


     } 
    } 

    public static void main(String[] args) { 
     List<Integer> ci1 = new ArrayList<>(Arrays.asList(null, 22, 33, 44, 55, 66, 77)); 
     ReplaceAllOfTheSameElements.replace(ci1, null, 11); 
     System.out.println(ci1); 
    } 
} 
+0

null == null!= 0 –

回答

1

你傳入null對象在電子商務VAL和下面的線比較。因此,它是給NullPointerException

f(val.equals(it.next())){ 
       it.set(newVal); 
} 

在Java 0或null是簡單的類型,而不是對象。

方法equals()不適用於簡單類型。簡單類型可以與==匹配。

相關問題