我有一个Box类,它包含一个值,我想创建一个这个类的数组。
Box Class:
public class Box<T> {
public T t;
public Box(T t){ this.t = t; }
}
测试类:
public class Test {
public static void main(String[] args) {
Box<Integer>[] arr = new Box<Integer>[10];
}
}
编译说:
无法创建Box的通用数组
我想知道为什么我们不能这样做,我该怎么办呢?
答案 0 :(得分:2)
Java不允许通用数组。
您可以在此处找到更多信息:Java Generics FAQ。
要快速解决问题,请使用List(或ArrayList)代替数组。
List<Box<Integer>> arr = new ArrayList<Box<Integer>>();
答案 1 :(得分:1)
这曾经工作(产生警告),仍然应该做你需要的:
Box<Integer> arr = (Box<Integer>[]) new Box[10];
答案 2 :(得分:0)
不,你不能因为type erasure而有两种可能的解决方法:
ArrayList<Box<Integer>>
java.lang.reflect.Array.newInstance(clazz, length)
答案 3 :(得分:0)
Box<Integer> arr = (Box<Integer>[])new Box<?>[10];