可能重复:
在 Java 中创建泛型数组
我想将一个通用的对象数组修剪到只有第一个 len 元素。这似乎应该工作:
@SuppressWarnings("unchecked")
public static <T> T[] trimArray(T[] data, int len){
T[] result = (T[]) new Object[len];
System.arraycopy(data, 0, result, 0, len);
return result;
}
但是如果我做类似的事情,它会抛出一个 ClassCastException
public class Foo{
double f;
public Foo(double f){
this.f = f;
}
}
public static void main(String[] args){
Foo[] A = new Foo[10];
A[0]= new Foo(1);
A[1]= new Foo(2);
A[2]= new Foo(3);
Foo[] B = trimArray(A, 3);
}
我不明白为什么这不起作用,但是在泛型类中的 java 泛型转换中类似的东西