Typ eines Objekts zur Laufzeit bestimmen?

Status
Nicht offen für weitere Antworten.

fischerman

Mitglied
Hallo,

ich habe eine Liste von verschiedenen Objekten von denen ich den genauen Typ nicht kenne. Diese speichere ich in einer Variablen vom Typ Object.
Jetzt würde ich gerne dieses Objekt vom Typ Object in ein Objekt des eigentlichen Typs umwandeln. Kann dies dynamisch zur Laufzeit gemacht werden oder geht das nur über die explzite Abrage von Istanceof?

Danke für die Hilfe!

Gruß Martin
 
S

SlaterB

Gast
dynamisch in einen Typ umwandeln macht doch gar keinen Sinn,
angenommen es ginge, welchen Code würdest du dann hinschreiben?

DynamischerTyp d = (DynamischerTyp) object; ?

was hast du dann für Information gewonnen?
wenn du eine Operation aufrufen willst, wie Operation x von Klasse Y,
dann musst du doch so oder so das Objekt nach Y casten,
was könnte dabei dynamisch sein?
 

jPat

Bekanntes Mitglied
evtl kannst du damit etwas anfangen:
Object o = new HashMap();
Integer i = new Integer(1);
Integer j = i.getClass().cast(o);

Aber Object o = new Integer(2); sollte gehen...
es gobt noch getClass() ...
 
F

FlorianP

Gast
Eigentlich ist die Abfrage mit instanceof die richtige und schnellste Möglichkeit ein Objekt auf einen Typ zu prüfen. Man kann es allerdings auch auf folgendem Wege tun:

Code:
String classNameOfMyUnknownObject = myUnknownObject.getClass().getName();

if("java.util.Date".equals(classNameOfMyUnknownObject)) {
   // mein Objekt ist vom Typ java.util.Date
   Date myDate = (Date) myUnknownObject;
}

Kann man so machen, sollte man aber besser mit instanceof prüfen. Zumal du ja auch "explizit" casten wirst, oder?

Für "dirty-Tricks" kann man ja mal einen Blick in die Reflection-API (java.lang.reflect) werfen. Da hat man mehrere Möglichkeiten relativ dynamisch zu programmieren.

Was möchtest du denn überhaupt tun? Vielleicht gibts ja ne elegante Lösung?

Gruß, Florian
 

Wildcard

Top Contributor
FlorianP hat gesagt.:
Was möchtest du denn überhaupt tun? Vielleicht gibts ja ne elegante Lösung?
Das ist genau die richtige Frage. instanceof bedeutet immer konditionalen Code. In idealer OOP wissen die Objekte von alleine was zu tun ist.
Allerdings ist instanceof manchmal effektiver als ein utopisches, perfektes Design.
Aber um beurteilen zu können ob instanceof hier richtig ist, reichen die Informationen nicht aus.
 
B

bygones

Gast
ja.. meist reicht ein einfacheres design bzw interface definition schon aus...
 
M

maki

Gast
Viele instanceOf deuten auf ein Designfehler hin, polymorphie wäre u bevorzugen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Größe eines Objekts im Arbeitsspeicher Allgemeine Java-Themen 1
D Name eines Nicht-String Objekts ausgeben Allgemeine Java-Themen 4
T Mit Java auf die Konsole eines Process-Objekts zugreifen Allgemeine Java-Themen 10
S Einfache Methode die Groesse eines Objekts zu ermitteln? Allgemeine Java-Themen 12
E Ermitteln einer eindeutigen ID eines Objekts möglich? Allgemeine Java-Themen 17
T Ungewollte Manipulation eines Objekts Allgemeine Java-Themen 2
C Methodenzugriff eines generischen Objekts Allgemeine Java-Themen 3
F Kopieren eines Objekts Allgemeine Java-Themen 3
S Neue Instanz eines Objekts erzeugen - Konstruktor erhaelt Parameter. Allgemeine Java-Themen 5
I Konstanten bei Erzeugung eines Objekts initialisieren Allgemeine Java-Themen 3
M Indentität eines Objekts Allgemeine Java-Themen 2
G Speichergrösse eines Objekts messen? Allgemeine Java-Themen 3
A Private-Wert eines Objekts auslesen Allgemeine Java-Themen 9
J Attribute eines Objekts in ByteArray Allgemeine Java-Themen 3
7 Inhalt eines Objekts leeren aber Objekt nicht löschen Allgemeine Java-Themen 17
E Reihenfolge der Initialisierungen eines Objekts Allgemeine Java-Themen 17
B "Instantiieren" eines Objekts eines Interfaces Allgemeine Java-Themen 10
D UnsupportedOperationException beim Hinzufügen eines Objekts Allgemeine Java-Themen 4
N Array Element vom Typ eines Objekts zeigt auf ein anderes A. Allgemeine Java-Themen 4
E Sichtbarkeit eines Objekts Allgemeine Java-Themen 4
B Namen eines Objekts generieren? Allgemeine Java-Themen 4
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
F Teil eines Bildes laden Allgemeine Java-Themen 1
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
RalleYTN Input/Output URL eines Zip Entry? Allgemeine Java-Themen 2
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben