ClassCastException
-
Hallo!
warum bekomme ich hier öfters mal eine classcastexception?class Base { Base() { } void test() { System.out.println("test"); } } class Fin extends Base { Fin() { super(); } void test2() { System.out.println("test"); } } class Test { public static void main(String[] args) { ArrayList list =new ArrayList(); list.add(new Fin()); list.add(new Base()); list.add(new Base()); list.add(new Fin()); //HIER Base b = (Base)list.get(Integer.parseInt(args[0]); } }
an was liegt das und wie kann ich das verhindern?
danke im voraus
-
Na, wenn list.get() ein Objekt zurückliefert, dass sich nicht in ein Base casten lässt, bekommst du diese Exception.
Vielleicht liefert list.get() auch mal null zurück?
-
Na, wenn list.get() ein Objekt zurückliefert, dass sich nicht in ein Base casten lässt, bekommst du diese Exception.
In dem von ihm geposteten Code befinden sich nur Klassen, die zum Typ Base "kompatibel" und sich in diesen casten lassen.
Vielleicht liefert list.get() auch mal null zurück?
Wenn get mit einem ungültigen Index aufgerufen wird, schmeißt es eine IndexOutOfBoundsException. Selbst wenn get() null zurückgeben würde, könnte es keine ClassCastException geben, weil man null immer problemlos casten kann.
-
In dem von ihm geposteten Code befinden sich nur Klassen, die zum Typ Base "kompatibel" und sich in diesen casten lassen.
Das sehe ich auch. Trotzdem liegt es daran, weil die Exception genau das sagt.
Java API Dokumentation schrieb:
Thrown to indicate that the code has attempted to cast an object to a subclass of which it is not an instance.
Vielleicht hat er uns nicht alles gezeigt?