Java 创建泛型数组

1、问题引入
  • Java 的泛型是通过类型擦除实现的,在运行时无法知道泛型参数 T 的具体类型,无法直接创建泛型数组
// 错误,无法直接创建泛型数组

public class GenArray<T> {
    private final T[] arr;

    public GenArray(int size) {
        arr = new T[size];
    }
}
2、处理策略
  1. 创建 Object[] 然后强制转换
public class GenArray<T> {
    private final T[] arr;

    public GenArray(int size) {
        arr = (T[]) new Object[size];
    }
}
GenArray<Integer> genArray = new GenArray<>(3);
  1. 通过反射创建数组
public class GenArray<T> {
    private final T[] arr;

    public GenArray(Class<T> clazz, int size) {
        arr = (T[]) Array.newInstance(clazz, size);
    }
}
GenArray<Integer> genArray = new GenArray<>(Integer.class, 3);

更多推荐