首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 泛型數組無法創建:基本類型數組不能作為泛型參數

     編輯:程式設計疑難解答

錯誤代碼

int[] arr = {1,23,4,6,7};
reverse(arr); // 編譯錯誤

public static  void reverse(T[] arr) { ... }

原因

Java 泛型類型擦除後為 Object,但**基本類型數組 (`int[]`, `double[]` 等) 不繼承自 `Object[]`**,而是直接繼承 `Object`。泛型方法簽名 `T[]` 要求參數為**引用類型數組**,基本類型數組不匹配。

解決方案

  1. 使用包裝類型數組 (推薦):

Integer[] arr = {1,23,4,6,7}; // 或 new Integer[]{...}
reverse(arr); // 正常
  1. 重載基本類型版本:

public static void reverse(int[] arr) { ... }
public static void reverse(double[] arr) { ... }
// 八種基本類型各寫一個重載
  1. 轉換為 List (Java 8+ Stream):

int[] arr = {1,23,4,6,7};
List list = Arrays.stream(arr).boxed().collect(Collectors.toList());
Collections.reverse(list);
// 或自寫泛型 List 版 reverse

核心規則

Java 不支持聲明泛型數組 (如 `new T[10]`);更確切地說:**數組的組件類型不能是類型變量**,除非使用通配符 ``。

參考

Java 泛型數組詳細解析

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved