這段代碼居然能編譯通過
運行:java.lang.ArrayStoreException: java.lang.String
Object[] arr = new Long[1];
arr[0] = "hello";
相比之下,列表好一些
編譯時就不通過
List<Object> list = new ArrayList<Long>();
數組是協變的,多用List

這是一個集合轉array,很複雜,需要强轉來消除警告
private final T[] list;
public Test(Collection<T> list) {
this.list = (T[]) list.toArray();
}
這是一個集合轉List,一切ok,簡單明瞭
private final List<T> list;
public Test(Collection<T> list) {
this.list = new ArrayList<>(list);
}
這個問題主要是因爲汎型的類型擦除