投射陣列

陣列是物件,但它們的型別由包含的物件的型別定義。因此,不能只將 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);