Java泛型不能使用陣列


不允許使用引數化型別的陣列。如下程式碼是錯誤的 -

//Cannot create a generic array of Box<Integer>
Box<Integer>[] arrayOfLists = new Box<Integer>[2];

因為編譯器使用型別擦除,型別引數被替換為Object,使用者可以向陣列新增任何型別的物件。但在執行時,程式碼將無法丟擲ArrayStoreException

// compiler error, but if it is allowed
Object[] stringBoxes = new Box<String>[];

// OK
stringBoxes[0] = new Box<String>();  

// An ArrayStoreException should be thrown,
//but the runtime can't detect it.
stringBoxes[1] = new Box<Integer>();