天天看點

java 泛型數組

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.