public class GenericArrayWithTypeToken<T> {
private T[] array;
public GenericArrayWithTypeToken(Class<T> type,int sz) {
array = (T[]) Array.newInstance(type, sz);
//array = (T[])new Object[sz]; 會出現類型轉換異常
}
public void put(int index,T item) {
array[index] = item;
}
public T get(int index) {
return array[index];
}
public T[] rep() {
return array;
}
public static void main(String[] args) {
GenericArrayWithTypeToken<Integer> gai =
new GenericArrayWithTypeToken<>(Integer.class, 10);
Integer[] ia = gai.rep();
}
}
java建立泛型數組可以通過Array類的newInstance方法建立,包含兩個參數,第一個是數組類型,第二個是長度.
如果使用T[ ]建立數組會編譯錯誤.
如果使用 (T[ ])new Object[SIZE] 雖然編譯器不會出錯,但是運作期會出錯,畢竟建立的是Object數組,array實際指向的是Object數組,無法強轉化為T.