Generics, Arrays und die ClassCastException
Ich denke, hier muss etwas Feines los sein, von dem ich nichts weiß. Folgendes berücksichtigen
public class Foo<T> {
private T[] a = (T[]) new Object[5];
public Foo() {
// Add some elements to a
}
public T[] getA() {
return a;
}
}
Angenommen, Ihre Hauptmethode enthält Folgendes:
Foo<Double> f = new Foo<Double>();
Double[] d = f.getA();
ie erhalten einCastClassException
mit der Nachrichtjava.lang.Object
kann nicht in @ umgewandelt werdjava.lang.Double
.
ann mir jemand sagen warum? Mein Verständnis vonClassCastException
wird ausgelöst, wenn Sie versuchen, ein Objekt in einen Typ umzuwandeln, der nicht umgewandelt werden kann. Das heißt, für eine Unterklasse, für die es sich nicht um eine Instanz handelt (um die Dokumentation zu zitieren). z.B.
Object o = new Double(3.);
Double d = (Double) o; // Working cast
String s = (String) o; // ClassCastException
Und es scheint, dass ich das schaffen kann. Wenna
war nur einT
anstelle eines ArraysT[]
, wir können bekommena
und wirf es ohne Probleme. Warum brechen Arrays dies?
Vielen Dank