2015-10-30 153 views
1
public ArrayList(Collection<? extends E> c) { 
     elementData = c.toArray(); 
     size = elementData.length; 

     if (elementData.getClass() != Object[].class) 
      elementData = Arrays.copyOf(elementData, size, Object[].class); 
} 

我不明白「if(elementData.getClass()!= Object []。class)」語句和它爲什麼需要。這是ArrayList構造函數的實現。有人可以請解釋。謝謝!ArrayList構造函數

回答

6

Collection.toArray()可能會返回一個Object數組,或者它可能會返回已被轉換爲Object數組的其他數組類型。你引用的代碼是確保其數據數組實際上是一個Object數組,因此它能夠接收任何Object