java创建泛型数组
Posted 何甜甜在吗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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]程序运行将会出错
以上是关于java创建泛型数组的主要内容,如果未能解决你的问题,请参考以下文章