List list = new ArrayList<>();
list.add(new A()); list.add(new A());
A[] a1 = (A[]) list.toArray(); // ClassCastException
A[] a2 = list.toArray(new A[]{}); // 正常
List.toArray() 返回 **Object[]**,運行時類型為 Object[]。A[] 是 Object[] 的子類型,**但反向不成立**;Object[] 不能強轉為 A[](會存入非 A 對象破壞類型安全)。toArray(T[] a) 內部創建 **T[] 類型數組**(若傳入長度足夠則復用),運行時類型正確,可安全返回。|A[] a2 = list.toArray(new A[0]); // JDK 11+ 推薦零長度數組,性能最優
// 或
A[] a2 = list.toArray(new A[list.size()]); // 避免擴容拷貝
toArray(T[])。new A[0] 會觸發 JVM 優化(逃逸分析分配精確大小)。|