PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : dynamisch Casten



gaansch
13-12-2004, 18:10
Hi,

ich hab hier ein Problem und weiss irgendwie nicht, oder das zum einen so geht, oder wenn es gehen sollte, wie es funktioniert.

Ich habe eine Abstrakte Klasse, die dynamisch Methoden aufruft, die sie über einen Key aus einer Hashtable bekommt. Jede Kindklasse kann Methoden mit einem Key in die Hashtable hinzufügen. Wenn jetzt eine Methode aufgerufen wird, die nur die Abstrakte Klasse hat und diese dann die Methode aufruft, die sie über den Key bekommen hat, kennt sie die Methoda ja natürlich nicht, weil das Objekt ja nicht vom richtigen Typ ist.
Gibt es eine Möglichkeit dynamisch zu casten, also während der Laufzeit zu bestimmen, in welchen Typ ein Objekt umgewandelt werden soll?

Ich hoffen, mir kann jemand helfen...

Gruss
Sebastian

Alex_K
13-12-2004, 19:08
möglich ist es schon:



if ( obj instanceof klasse1)
((klasse1)obj).methode1();
if ( obj instanceof klasse2)
((klasse2)obj).methode2();
...
..
.


das ist aber alles andere als schöner objektorientierter code.
vielleicht solltest du dir überlegen ob du das problem nicht auf eine andere art lösen kannst.

gaansch
13-12-2004, 19:22
Klar, dass es so geht, weiss ich. Aber was mache ich, wenn der Name der Klasse nicht bekannt ist? Bzw erst während der Laufzeit bekannt wird.

peschmae
13-12-2004, 20:17
Da das Java so afaik nicht kann habe ich mal bei Google vorbeigeguckt und das hier gesehen: http://www.llnl.gov/CASC/components/docs/users_guide/node151.html - der zweite wäre wohl was du brauchst.

MfG Peschmä

gaansch
13-12-2004, 20:59
mhm, funktioniert irgendwie nicht ganz, bzw vieleicht verstehe ich das auch nich so ganz.

aber, wenn ich das hier so lese:

Also, in casting, they both create a new Java object that owns a new reference to the IOR object

Da kann ich mir doch auch mit den Reflections 'n neues Objekt erzeugen und es sollte auch klappen.