投射阵列
数组是对象,但它们的类型由包含的对象的类型定义。因此,不能只将 A[]
投射到 T[]
,而是必须将特定 A[]
的每个 A 成员投射到 T
对象。通用示例:
public static <T, A> T[] castArray(T[] target, A[] array) {
for (int i = 0; i < array.length; i++) {
target[i] = (T) array[i];
}
return target;
}
因此,给定一个 A[]
数组:
T[] target = new T[array.Length];
target = castArray(target, array);
Java SE 为此提供了方法 Arrays.copyOf(original, newLength, newType)
:
Double[] doubles = { 1.0, 2.0, 3.0 };
Number[] numbers = Arrays.copyOf(doubles, doubles.length, Number[].class);