Vererbung Klassen-Downcasting wirft ClassCastException

Hallo,
ich möchte die Klasse org.jdom.Document um weitere Methoden erweitern und habe eine Klasse:
Code:
public class XmlDocument extends org.jdom.Document

In einer anderen Klasse versuche ich jetzt ein XML-Dokument einzulesen und rufe
Code:
new SAXBuilder().build( XmlFile );
auf, was mir ein obiges Document-Objekt zurückliefert. Jetzt möchte ich ja aber ein XmlDocument-Objekt haben. Das casten:
Code:
XmlDocument doc = (XmlDocument) new SAXBuilder().build( XmlFile );
schlägt jedoch mit einer "ClassCastException: org.jdom.Document cannot be cast to XmlDocument"-Meldung fehl.

Ich habe vereinzelt den Hinweis gelesen, dass ein Downcasten nur dann möglich ist, wenn das Objekt ursprünglich bereits zur Kindklasse gehört ( Java ist auch eine Insel – 6.7 Vererbung ).
Bin mir aber nicht sicher, ob ich das so richtig verstanden habe. Wenn dies stimmt, was gibt es dann für Möglichkeiten, das gewünschte doch zu erreichen?
 
Mit nem Cast wirst Du hier nix !

Deine Klasse XmlDocument erweitert ja die Klasse Document um Attribute, Methoden oder was auch immer, woher soll der SAXBuilder die denn kennen, der kann dir also nur ein Document zurückgeben.

Was hast Du denn vor? bzw. was soll deine Klasse XmlDocument zusätzlich können?

Eine Möglichkeit wäre es, dir in deiner Klasse XmlDocument einen Konstruktor zu erstellen, der ein Document aufnimmt.

Eine weitere Möglichkeit wäre es einen "custom" SaxBuilder zu bauen, der intern mit dem SaxBuilder arbeitet ... siehe: Delegation pattern - Wikipedia, the free encyclopedia
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben