java創建泛型數組


java中創建泛型數組並不是不可能,創建泛型數組通過反射,給構造函數傳遞兩個參數,一個類型標記,一個數組大小。‘

 

簡單Demo如下:

import java.lang.reflect.Array;

/**
 * 創建泛型數組
 * @author hetiantian
 */
public class GenericArrayWithTypeToken<T> {
    private T[] array;

    public GenericArrayWithTypeToken(Class<T> type, int size) {
        array = (T[]) Array.newInstance(type, size);
    }

    public static void main(String[] args) {
        GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>(House.class, 10);
        System.out.println(g.array.getClass().getSimpleName());
        System.out.println(g.array.length);
    }
}

 

 

運行結果:

House[]
10

 

從結果來看,成功創建了所想要的數組類型,傳遞類型參數到構造器中是為了從擦除中恢復

 

錯誤的創建方式:

/**
 * 創建泛型數組
 * @author hetiantian
 */
public class GenericArrayWithTypeToken<T> {
    private T[] array;

    public GenericArrayWithTypeToken(int size) {
        array = (T[]) new Object[size];  
    }

    public static void main(String[] args) {
        GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>( 10);
        System.out.println(g.array.getClass().getSimpleName());
        System.out.println(g.array.length);
    }
}

數組需要確定的類型,這個Demo中的構造函數相當於T[] array = new T[size]程序運行將會出錯

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM