Sie müssen verstehen, was Guss der Fall ist.
Casting ist eine Kompilierzeitrichtlinie; Es teilt dem Compiler mit, dass die Operation, die ausgeführt wird (showOpenDialog()
in Ihrem Fall), ein Objekt zurückgibt, das der Besetzung entspricht. Wenn das nicht wahr ist, wird das Programm zur Laufzeit einen IllegalCastException
werfen. Es ist Sache des Programmierers, der den Cast schreibt, um sicherzustellen, dass der Cast zur Laufzeit korrekt ist. Der Compiler wird Ihnen sagen, ob es in vielen Fällen keine Möglichkeit gibt, dass es korrekt ist, aber nicht in allen Fällen.
FileChooser
wurde ohne Wissen Ihrer Source
Klasse geschrieben, so dass es nicht möglich ist, ein Source
Objekt zurückzugeben. Wenn die Umwandlung erfolgreich gewesen wäre, würde es Ihnen (durch den Compiler) möglich sein, Methoden vom Source
auf dem resultierenden Objekt aufzurufen, und das wäre eindeutig falsch.
Eine Sache, die man über das Casting wissen sollte, ist, dass Casting, abgesehen von sehr begrenzten Umständen, die Boxed-Primitive beinhalten, das angesprochene Objekt überhaupt nicht verändert. Sein Zweck besteht darin, dem Compiler mitzuteilen, dass Operationen für die resultierende Klasse zulässig sind.
Nebenbei hilft es enorm, wenn man eine Frage stellt, um zu sagen, was passiert, nicht nur "gibt einen Fehler zurück". Ist das ein Kompilierungs- oder Laufzeitfehler? Was sagt der Fehler? Bitte denken Sie daran, dass Sie für Fragen in der Zukunft fragen.