instanceof)。Class.forName()、Method.invoke())。Java 基本型別陣列(如 int[])無法直接轉型為 Object[],只能視為 Object。這導致通用處理陣列(如列印、轉 List)變得困難。陣列反射(java.lang.reflect.Array)提供統一 API,支援任意型別、任意維度陣列的動態建立、存取與遍歷。
int[] data = {58, 55, 93, 61, 61, 29, 68, 0, 22, 7};
Object obj = data; // 向上轉型
if (obj.getClass().isArray()) {
int len = Array.getLength(obj);
for (int i = 0; i < len; i++) {
int value = Array.getInt(obj, i); // 取得基本型別值
System.out.print(value + " ");
}
}
// 一維陣列:相當於 new int[20] Object arr1 = Array.newInstance(int.class, 20); // 二維陣列:相當於 new int[10][8] Object arr2 = Array.newInstance(int.class, 10, 8);
支援基本型別與物件陣列、多維陣列、空陣列、含 null 陣列的格式化列印,可輸出至 Console、檔案或字串。
提供 asList(Object) 方法,利用反射將陣列、Iterator、Enumeration、Map、Iterable 統一轉換為 List<?>,解決 Arrays.asList() 無法處理基本型別陣列的缺陷。
陣列反射為處理不確定型別陣列提供極大靈活性,但犧牲效能。實務開發中應視需求權衡:通用框架、工具庫開發適合使用;效能敏感的業務邏輯建議優先使用強型別直接操作。