Typecast selber schreiben

woody100

Mitglied
Hallo,

ich habe schon das Internet durchforstet, aber leider nicht gefunden was ich brauche! Vielleicht liegt es auch daran, dass es in Java gar nicht funktioniert, bzw. keine Möglichkeit gibt!

Also hier die Beschreibung:

Ich habe ein eine eigene Java-Datenstruktur(Workflow) und dazu habe ich mir einen Transformer geschrieben, welcher den Workflow in eine für mich passende (auch eigende Datenstruktur(InternalWorkflow) transformiert. Nun wäre es praktisch wenn ich es irgendwie schaffen könnte zwischen diesen beiden Objekten einen cast zu machen.
Bsp:
Code:
Workflow wfk = new Workflow();
InternalWorkflow w = (InternalWorkflow) wfk;

Das heißt, dass ich Java sage, wie er dieses Workflow object in das InternalWorkflow object castet!

Weiß jemand, ob es dazu eine Unterstützung seitens Java gibt?

Was vl. noch zu sagen ist, bei dem Workflow kann ich nicht einfach eine Methode wie z.bsp toInternalWorkflow() hinzufügen, da diese Datenstruktur schon compiliert ist, und diese nicht von mir ist. Kurz gesagt, ich kann den Quellcode nicht bearbeiten.

Gruß und Danke,
woody
 
Der cast wie du ihn vorhast, würde funktionieren, wenn Workflow von InternalWorkflow abgeleitet ist oder der Typ InternalWorkflow ein gemeinsames Interface beider Klassen wäre.
Falls die Vererbung nicht gegeben ist, kann auch einfach eine Methode implementiert werden, die die Konvertierung durchführt und das Zielobjekt zurückliefert (erfordert ein Import der anderen Klasse, dort wo die Transformationsmethode implementiert wird).
Alternativ eine externe Helperklasse, mit Konvertierungsmethode.
 
Ja wie du schon vermutet hast, ist die vererbung bzw. implementierung des gemeinsamen Interfaces nicht gegeben.

Eine eigene Transformerklasse die mir, dieses transformieren automatisch durchführt habe ich schon, aber ich dachte, das es so auf jedenfall übersichtlicher und schöner ist.

Wie du geschrieben hast,
Falls die Vererbung nicht gegeben ist, kann auch einfach eine Methode implementiert werden, die die Konvertierung durchführt und das Zielobjekt zurückliefert (erfordert ein Import der anderen Klasse, dort wo die Transformationsmethode implementiert wird).

das verstehe ich nicht ganz. Oder meinst du dass Ich bei meinem InternalWorkflow eine methode
Code:
public InternalWorkflow transform(Workflow)
mache.
Falls du etwas anderes gemeint hast, bitte ich dich, mir das nochmals genauer zu erklären.

Ansonsten Danke! Habe mir schon fast gedacht, dass soetwas wie ich es haben wollte, nicht möglich ist!

Gruß,
woody
 
Ja genau, das meine ich. Ich wollte nur darauf hinweisen, dass dort wo die Methode implementiert ist, der jeweils andere Typ verfügbar sein muss. Dies kann unter Umständen zu Abhängigkeitsproblemen zwischen Projekten führen.
Statt der Methode transform ist auch ein Konstruktor denkbar, der ein Objekt der anderen Klasse als Parameter entgegen nimmt. Was am sinnvollsten ist, hängt davon ab wie genau das Objekt initialisiert werden soll.
Wenn ein InternalWorkflow beim ersten erzeugen quasi immer mit einem Workflow Objekt initialisiert wird, passt die Konstruktorvariante am besten.
Falls die Instanzerzeugung sich hinzieht oder halbfertige InternalWorkflows mit Workflows ergänzt werden wäre eine fromWorkflow() Methode besser.
 
Zurück