私が知らない微妙な何かがここで起こっているに違いないと思います。次の点を考慮してください。
public class Foo<T> {
private T[] a = (T[]) new Object[5];
public Foo() {
// Add some elements to a
}
public T[] getA() {
return a;
}
}
メイン メソッドに次のものが含まれているとします。
Foo<Double> f = new Foo<Double>();
Double[] d = f.getA();
にキャストできないCastClassException
というメッセージが表示されます。java.lang.Object
java.lang.Double
誰でも理由を教えてもらえますか? 私の理解でClassCastException
は、オブジェクトをキャストできない型にキャストしようとするとスローされるということです。つまり、インスタンスではないサブクラスに対してです(ドキュメントを引用するため)。例えば:
Object o = new Double(3.);
Double d = (Double) o; // Working cast
String s = (String) o; // ClassCastException
そして、私はこれを行うことができるようです。がarray ではなくa
単なる a の場合、問題なく取得およびキャストできます。配列がこれを壊すのはなぜですか?T
T[]
a
ありがとう。