Genéricos, matrices y ClassCastException
Creo que debe haber algo sutil pasando aquí que no sé. Considera lo siguiente:
public class Foo<T> {
private T[] a = (T[]) new Object[5];
public Foo() {
// Add some elements to a
}
public T[] getA() {
return a;
}
}
Suponga que su método principal contiene lo siguiente:
Foo<Double> f = new Foo<Double>();
Double[] d = f.getA();
Obtendrás unCastClassException
con el mensajejava.lang.Object
No puede ser enviado ajava.lang.Double
.
puede alguien decirme por que? Mi comprensión deClassCastException
es que se lanza cuando intentas lanzar un objeto a un tipo que no se puede lanzar. Es decir, para una subclase de la cual no es una instancia (para citar la documentación). p.ej.:
Object o = new Double(3.);
Double d = (Double) o; // Working cast
String s = (String) o; // ClassCastException
Y parece que puedo hacer esto. Sia
era solo unT
en lugar de una matrizT[]
, nosotros podemos obtenera
y lanzarlo sin problema. ¿Por qué las matrices rompen esto?
Gracias.