Java 中數組具有 協變性:Sub[] 可賦值給 Super[]。但泛型不具備協變性(List<Sub> 不能賦值給 List<Super>)。
Integer[] arr = new Integer[10];
Object[] objArr = arr; // 合法,數組協變
objArr[0] = "string"; // 運行時拋 ArrayStoreException
若 int[] 能隱式轉為 Integer[],同樣會破壞類型安全:
int[] primitives = new int[10];
Integer[] boxed = primitives; // 假設允許
boxed[0] = null; // 基本類型數組無法存 null,運行時崩潰
Arrays.stream(primitives).boxed().toArray(Integer[]::new))。ArrayUtils.toPrimitive(wrapperArray) 或手動循環)。結論:int[] 與 Integer[] 在內存佈局、類型系統上本質不同,無隱式轉換。