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.