Dynamisch casten - möglich? wie?

Status
Nicht offen für weitere Antworten.
P

pir187

Gast
Hallo,

ich habe ein Problem:

ich möchte ein Objekt auf einen bestimmten Typ casten, den ich nicht fest kenne, sondern der dynamisch ist. Der Typ des Objektes soll dabei dem entsprechen, den ein neu erstelltes Objekt hat.

Beispiel:
Code:
// Erstellen eines Objektes, dessen Namen ich dynamisch variieren muß
Object existingObject;

Class newClass = Class.forName("myClassName");

// Casten des bereits existierenden Objektes auf den Typ von newClass
existingObject = (typeOfNewClass)existingObject;    // o.k.

Das Problem ist nun folgendes:
ich hole mir den String "myClassName" , der als Parameter für
Code:
Class.forName
dient, aus einer dynamisch initialisierten Hashtable, deren Elemente ich nicht kenne. Also kenne ich auch den Typ nicht, den newClass annehmen wird.
Ich will aber oldObject auf genau diesen Typ casten, ohne für alle möglichen Klassenvarianten eine neue Zeile a la
Code:
existingObject = (targetType)anotherObject;
zu benötigen.


Gibt es mit JAVA 1.4 eine Möglichkeit, oldObject in den Typ von newClass zu casten? Ich bin für jegliche Hilfe dankbar, da das Problem gelöst werden muß.

MfG, pir187
 
R

Roar

Gast
nein. das geht nicht und hat auch keinen zweck ;)
mit java 1.5 gehts: Class#cast() und mit generics macht das dann auch sinn. (mehr oder weniger)
 

Bleiglanz

Gesperrter Benutzer
>> oldObject in den Typ von newClass zu casten?

wie sollte das auch aussehen? was würdest du dann im Quelltext schreiben??

dynObjekt.jetztEinMethodenNamevondemichnixweiss

was sollte wohl der Compiler damit machen? was willst du damit machen??

verwende Interfaces und dergleichen, diese Funktionalität kann es in Java gar nicht geben...
 
G

Guest

Gast
Ich versuche, meine Erklärung zu verbessern:

Bei der Inter-Applet-Kommunikation kann ein Applet Methoden eines anderen Applets aufrufen. Dabei muß das rufende Objekt aber in den Typ des gerufenen Objektes gecastet werden, bevor es eine Methode des gerufenen Applets rufen kann.

Meine verschiedenen Appletklassen sind alle von JApplet abgeleitet. Jedes hat aber seinen eigenen Typ.
Ein Applet eines bestimmten Subtyps bekommt als Parameternamen den Typ eines anderen Subtyp-Applets und als Parameterwert den Namen mitgeteilt, unter dem dieses andere Sybtyp-Applet auf der HTML-Seite eingefügt ist. Dieses Wertepaar wird in eine interne Hashtable eingefügt. Dabei ist der Parametername der Key und der Parameterwert (also der Instanzenname innerhalb der HTML-Seite) der Value eines Hashtableeintrages.

Im zweiten Schritt soll das Applet von allen Elemente dieser Hashtable, also von allen anderen auf der Seite benutzten Appletklassen, jeweils eine Instanz anlegen. Dabei kennt es vorher die Typen nicht, das ist eine dynamische Anzahl anderer JApplet-Subklassen. Dazu wird o.g. Hashtable durchlaufen und mit
Code:
Class newClass = Class.forName(hashtable.get(hashtable.nextElement()))
ein neues Objekt dieses nun dynamischen Typs erstellt werden.
Ich weiß ja nie, welchen Typ ein neues Objekt haben soll, weil ich den Inhalt der Hashtable (eigentlich) nicht kenne.

Das Erstellen dieses Objektes mit der dynamischen Typisierung klappt ja. Aber nun will ich ein anderes JApplet, das ich durch eine Methode als return-Typ geliefert bekomme, in den selben Typ casten, den auch newClass hat. Aber wie kann ich diesen Wert als Ausdruck in der Cast-Klammer nutzen?


Fragt bitte nicht danach, ob das sinnvoll ist. Für mein Szenario ist es das, sonst hätte ich die Frage nicht gestellt.
Ich möchte also das return-Objekt einer Funktion auf den Typ eines Objektes casten, dessen Typ auch dynamisch (Argument = String wird aus Hashtable geholt) ermittelt habe. Geht dies?


Danke, pir187
 

Nova

Bekanntes Mitglied
Hallo,

Das Problem ist ja auch das du "irgendwas" auf was anderes casten willst.
Das ist nicht sinnvoll weil du (bzw. der Compiler) ja gar nicht weiß ob das überhaupt geht.

Du willst doch Methoden des anderen Applets aufrufen, korrekt? Also haben alle Applets gemeinsame Methoden
=> mach ein Interface das diese gemeinsamen Methode enthält und implementiere das Interface in allen Applets.
Jetzt kannst du zum Interface-Typ casten und dann damit die gemeinsamen Methoden aufrufen.


mfg
Christian
 
B

bygones

Gast
schreib dir halt ein grundlegendes Interface und caste auf das ?!

edit: achne nova - das hast du ja auch schon geschrieben :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Klasse dynamisch casten Allgemeine Java-Themen 14
berserkerdq2 Jemand einen Tipp wie man ein Javafx-Hintergrund "dynamisch" macht Allgemeine Java-Themen 3
E RMI FWH: RMI- Wie erstelle ich stubs dynamisch, bzw. unterdrücke eine Statisch-Warnung? Allgemeine Java-Themen 0
S Maven Jars dynamisch laden / Plugin-Struktur erstellen Allgemeine Java-Themen 14
T Statisch und dynamisch Allgemeine Java-Themen 1
MiMa Variableninhalte dynamisch abfragen Allgemeine Java-Themen 12
D Methode dynamisch aufrufen Allgemeine Java-Themen 2
S Externe Eclipse Projekte dynamisch einbinden Allgemeine Java-Themen 3
Thallius Externe .jar dynamisch einbinden Allgemeine Java-Themen 5
C Erste Schritte Baumstruktur (dynamisch) Allgemeine Java-Themen 9
F JTree: Nodes dynamisch anlegen via LinkedHashMap Allgemeine Java-Themen 2
B Reflection, invoke dynamisch befüllen Allgemeine Java-Themen 3
M Klassen Klasse Dynamisch laden und Konstruktor aufrufen Allgemeine Java-Themen 1
J rxtxserial.dll für 32 oder 64bit dynamisch einbinden Allgemeine Java-Themen 9
F Dynamisch ein Objekt einer bestimmten Subklasse erstellen Allgemeine Java-Themen 7
W Dateinamen dynamisch Parsen Allgemeine Java-Themen 12
T Classpath Klassen dynamisch erstellen Allgemeine Java-Themen 4
F Schlüsselworte Einstellungen dynamisch deserialisieren Allgemeine Java-Themen 5
S LaTeX Code in dynamisch erzeugten PDF's Allgemeine Java-Themen 8
X Dynamisch Konstruktor aufrufen Allgemeine Java-Themen 12
hdi Ressourcen dynamisch zur Laufzeit laden Allgemeine Java-Themen 15
A Klassen dynamisch aus jar-datei laden Allgemeine Java-Themen 5
J instanceof vermeiden und stattdessen dynamisch binden Allgemeine Java-Themen 6
M Konstruktoraufruf dynamisch auswerten und SQL bauen Allgemeine Java-Themen 10
E Variable dynamisch ausgeben Allgemeine Java-Themen 5
Tandibur pattern dynamisch vorkompilieren Allgemeine Java-Themen 9
T Objekt dynamisch neu erstellen/ austauschen Allgemeine Java-Themen 9
T Dynamisch getypte Klasseninstanz? Allgemeine Java-Themen 6
H getText(); bei dynamisch generierten JTextFiled Allgemeine Java-Themen 2
F Wie erfahre ich dynamisch den namen eines aktuellen Objektes Allgemeine Java-Themen 2
S Asymmetrisches Array dynamisch erzeugen Allgemeine Java-Themen 4
T Objekte dynamisch über eine Methode erzeugen Allgemeine Java-Themen 10
R Object Dynamisch erzeugen (Reflection API) Allgemeine Java-Themen 22
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
B Listener dynamisch setzen Allgemeine Java-Themen 6
P Klasse Dynamisch laden und zurückgeben Allgemeine Java-Themen 17
P Array Dynamisch vergrößern Allgemeine Java-Themen 7
B objekt einer klasse dynamisch erzeugen Allgemeine Java-Themen 6
G Objekt dynamisch erstellen und Inhalte kopieren Allgemeine Java-Themen 6
C Dynamisch Objekte unterschiedlicher Typen erzeugen Allgemeine Java-Themen 6
D Klassen dynamisch laden Allgemeine Java-Themen 5
E Arrays -> dynamisch Allgemeine Java-Themen 21
K Methoden dynamisch erstellen Allgemeine Java-Themen 12
T Klassen dynamisch ausführen Allgemeine Java-Themen 3
N Graphische Oberfläche dynamisch erweitern möglich? Allgemeine Java-Themen 4
B Absolute Paf einer Klasse in dieser dynamisch auslesen? Allgemeine Java-Themen 5
Reeny Dynamisch Klassen kompilieren Allgemeine Java-Themen 5
G JDO Dynamisch ? Allgemeine Java-Themen 2
H Objekte m. versch. Interf. dynamisch erzeugen Allgemeine Java-Themen 11
E Klasse dynamisch über main-Methode aufrufen Allgemeine Java-Themen 9
D Strings dynamisch füllen Allgemeine Java-Themen 5
A Dynamisch Attribute hinzufügen Allgemeine Java-Themen 3
Baldur Datentypen Unnötiges Casten in Templatecode? Allgemeine Java-Themen 4
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
F Klassen Casten Allgemeine Java-Themen 2
W Datentypen Datentyp "Number" casten? Allgemeine Java-Themen 5
J byte - hex - byte.. casten Allgemeine Java-Themen 8
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
M Casten von Liste nach Array schlägt fehl?? Allgemeine Java-Themen 3
S Type safety Warnings beim casten von Generics Allgemeine Java-Themen 6
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
C casten vom Typ Object nach Double[][] Allgemeine Java-Themen 2
J Casten ueber generischen Parameter? Allgemeine Java-Themen 5
Q Typen von Generics & Casten Allgemeine Java-Themen 3
M Andere Möglichkeit zu casten Allgemeine Java-Themen 8
G Objekte automatisch casten Allgemeine Java-Themen 10
M wie casten ? Allgemeine Java-Themen 7
T casten von Objekten aus einer ArrayList Allgemeine Java-Themen 4
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
F Viele generische Parameter sinnvoll? oder besser casten? Allgemeine Java-Themen 10
D toArray() bei ArrayList casten Allgemeine Java-Themen 10
N treenode casten? Allgemeine Java-Themen 2
R object zu array casten. Allgemeine Java-Themen 2
S Dynamisches Casten Allgemeine Java-Themen 5
D Object in int casten Allgemeine Java-Themen 7
D Optimierung beim Casten Allgemeine Java-Themen 4
S Compliance 5.0 prob: HashMap von obj casten Allgemeine Java-Themen 3
M Typkonvertierung und Casten? Allgemeine Java-Themen 6
M Object in HashMap casten Allgemeine Java-Themen 4
C Reflection und variable casten ! Allgemeine Java-Themen 10
S ClassCastException beim Casten in eine Klasse Allgemeine Java-Themen 7
berserkerdq2 SceneBuilder GUI erstellt, nun muss ich noch ein Polygon erstellen, ist die Connection möglich? Allgemeine Java-Themen 3
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
B Arrays von Methoden möglich? Allgemeine Java-Themen 44
D VBA Code mit Java ausführen möglich? Allgemeine Java-Themen 10
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
I Eine Anwendung so gut wie möglich beschützen Allgemeine Java-Themen 9
D Java auf Webserver Website möglich Allgemeine Java-Themen 7
I PrinterJob - bestimmtes Druckerfach festlegen möglich? Allgemeine Java-Themen 2
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
OnDemand Zeilenumbruch ignorieren möglich? Allgemeine Java-Themen 1
0 Eingabe nicht möglich... Allgemeine Java-Themen 12
FunnyO KeyEvent.VK_ + int i, ausgeben mit Bot möglich? Allgemeine Java-Themen 2
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
B ist es möglich in java keyboardtöne per MIDI kabel aufzunhemen ? Allgemeine Java-Themen 5
F Mehrfachverebung in Java (möglich)? Allgemeine Java-Themen 4
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17

Ähnliche Java Themen

Neue Themen


Oben