Downcasting mit Interfaces (Java)?
public interface dasInterface{}
public class Klasse{}
Und wenn jetzt in der main das folgende steht:
dasInterface i = (dasInterface) new Klasse();
entsteht ein Laufzeitfehler. Wieso ist das so? Woran liegt es, dass es nicht geht? (Mir ist bewusst, dass die Klasse Klasse in meinem Codebeispiel nicht dasInterface implementiert. Will nur wissen, was der Grund für den Laufzeitfehler ist, also wie man sich das erklären kann.
lg Kath
1 Antwort
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
Hey,
das steht ja im Stacktrace, was genau das Problem ist. Ich vermute einfach mal, dass es sich dabei um eine ClassCastException handelt. Eine solche tritt auf, wenn man versucht X -> Y zu casten, sich X jedoch nicht zu Y casten lässt.
Mfg Jannick (L1nd)
![](https://images.gutefrage.net/media/user/JanMarcel01/1545064833528_nmmslarge__96_96_1728_1728_1530d37dedc00fac79f60049c3b6a4db.jpg?v=1545064834000)
Da das Interface "dasInterface" nicht von der Klasse "Klasse" implementiert wird und das Interface und die Klasse casting-inkompatibel sind, entsteht zur Laufzeit eine ClassCastException
Und wie begründet man dann beispielsweise in der Klausur, dass es zu nem Laufzeitfehler kam?