重複の可能性:
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ジェネリックキャストでも同様のことが起こります