Ermitteln welchen Typ ein "Object"-Objekt enthält

Status
Nicht offen für weitere Antworten.

Novanic

Bekanntes Mitglied
Hi Leute,

ich habe folgendes Problem:

Ich habe die drei Methoden "setValue(Object aValue)", "setValue(String aValue)", "setValue(Integer aValue)" und "setValue(Boolean aValue)".

Von außen ist nur die Methode "setValue(Object aValue)" erreichbar. Diese Methode soll dann intern die entsprechende Methode aufrufen und das Object übergeben.
Dazu muss die Methode aber wissen, was für ein Objekt in aValue (Object) steckt, um es dementsprechend zu casten und die entsprechende Methode aufrufen zu können.

Bisher habe ich das so umgesetzt, dass ich die Typen jeweils mit "instanceof" überprüfe und dann jedesmal dementsprechd caste... Aber die Lösung ist ja nicht wirklich schön.

Fällt jemanden da eine bessere/performantere Lösung ein? :)

Danke schonmal im Voraus! :)

Gruß Nova
 
B

bygones

Gast
die anderen Methoden public zu machen?

sonst gibt es keine möglichkeit. In methode setValue(Object o) wird das object o vom Typ Object behandelt, d.h. du musst dann explizit sagen was es ist -> instanceof & cast
 

SebiB90

Top Contributor
Novanic hat gesagt.:
Bisher habe ich das so umgesetzt, dass ich die Typen jeweils mit "instanceof" überprüfe und dann jedesmal dementsprechd caste... Aber die Lösung ist ja nicht wirklich schön.
ich würd sagen das das die einfachste lösung ist, andere möglichkeiten kenn ich eigentlich gar nicht, außer du holst dir das class object der klasse und guckst nach was es dann ist, also instanceof eigentlich das beste in dem fall

edit:
@dbac was bringt es die methoden public zu machen wenn es weiterhin setValue(Object o) gibt, Integer und String sind auch objecte also wird dann setValue(Object o) aufgerufen oder nich?
 

Novanic

Bekanntes Mitglied
Naja, aber wenn ich da jetzt so hundert verschiedene Methoden habe, dann kann ich ja nicht 100 mal instanceof nachfragen, wie unprofessionell ist das denn? ;-)

Das müsste man doch auch per Reflection rausbekommen können oder? Oder würde das sehr an der Performance nagen?

Es würde nichts nützen die Methoden public zu machen, weil die Objekte alle aus einer Map kommen und die Map/Set gibt mir ja auch nur Objects zurück.

Aber wenn ich mir das Object-Objekt ausgeben lasse, wird doch auch gezeigt welcher Typ da drin steckt. Wie funktioniert das denn? Müsste ja auch per Reflection laufen oder? Wird wohl kaum alle bekannten Typen mit instanceof durchfragen. *g* ;-)

Danke schonmal. :)

Gruß Nova
 
B

bygones

Gast
SebiB90 hat gesagt.:
edit:
@dbac was bringt es die methoden public zu machen wenn es weiterhin setValue(Object o) gibt, Integer und String sind auch objecte also wird dann setValue(Object o) aufgerufen oder nich?
ne das geht schon.

Keine ahnung wie das heißt, wenn aber der Typ genau auf die Methode passt wird diese verwendet. D.h. sind alle Methoden public sind das unterschied. Methodenaufrufe:
Code:
t.setValue("Hallo");
t.setValue(Integer.valueOf(3));
t.setValue(new Point(2,2));
 

meez

Top Contributor
deathbyaclown hat gesagt.:
Keine ahnung wie das heißt, wenn aber der Typ genau auf die Methode passt wird diese verwendet. D.h. sind alle Methoden public sind das unterschied. Methodenaufrufe:

AmBestenpassAlgorithmus ... :bahnhof: ..... Wie wärs mit Ueberladung? (Ist aber eher die OO Definition)
Ob's da wohl noch einen anderen Begriff gibt für die "tatsächliche" Auswahl der Methode zu Laufzeit..Wär mal interessant zu wisssen ???:L
 

Leroy42

Top Contributor
Novanic hat gesagt.:
Naja, aber wenn ich da jetzt so hundert verschiedene Methoden habe, dann kann ich ja nicht 100 mal instanceof nachfragen, wie unprofessionell ist das denn? ;-)

Du hast 100 setValue-Methoden die alle etwas anderes machen sollen? :shock:

Kann es sein, das irgendetwas an deinem Konzept nicht stimmt?
 

Novanic

Bekanntes Mitglied
Hehe, ne an meinem Konzept stimmt alles.

Ich habe ein TableModel und CellRender geschrieben. Ein Boolean soll z.B. als CheckBox, ein Integer als Splitter, ... angezeigt werden.
Die Werte kommen alle aus einer Map, deswegen sind es alles nur "Object"-Objekte. Und deshalb brauch ich eine Methode die Objects annimmt, den "echten" Typ herausfindet und die entsprechende Methode aufruft.

Hat noch einer eine Idee? Bitte, bitte. :)

Danke für eure Hilfe! :)

Gruß Nova
 

byte

Top Contributor
Novanic hat gesagt.:
Die Werte kommen alle aus einer Map, deswegen sind es alles nur "Object"-Objekte.

Hm, aber Du füllst die Map doch sicherlich nur mit Objekten desselben Typs oder würfelst Du da etwa alles mögliche an Objekten rein? Das wäre sehr unschön. Ansonsten kannst Du (SE5 vorrausgesetzt) die Map generisch machen, dann kriegste direkt die richtigen Objekte raus und nicht nur Objects.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Druckerauflösung per JNA ermitteln Allgemeine Java-Themen 3
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
S Verwendet Programmiersprache aus Quellcode - Datei ermitteln Allgemeine Java-Themen 6
B Dateistart ermitteln Allgemeine Java-Themen 14
MiMa Geldbetrag mit regex ermitteln. Allgemeine Java-Themen 14
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
S Marker aus String ermitteln Allgemeine Java-Themen 5
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
J Größe einer CD ermitteln Allgemeine Java-Themen 10
C Ermitteln ob Zeitumstellung war Allgemeine Java-Themen 37
KeexZDeveoper Nächstgelegenden Wert ermitteln Allgemeine Java-Themen 5
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
L Wachstumsordnung der Ausführungszeit ermitteln Allgemeine Java-Themen 7
MiMa MP3 Bitrate ermitteln Allgemeine Java-Themen 7
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
L Ermitteln der Anzahl an Lösungen von quatratischen Gleichungen (Sieb von Atkin) Allgemeine Java-Themen 1
L Java Version aus Tomcat ermitteln Allgemeine Java-Themen 3
F Content-Disposition ermitteln über URL Allgemeine Java-Themen 2
O MVC - wo Liste der ComboBox-Items ermitteln Allgemeine Java-Themen 3
F Zeit ermitteln Allgemeine Java-Themen 2
J ermitteln der Anzahl der Monate Allgemeine Java-Themen 7
F Swing selektierte Komponente ermitteln Allgemeine Java-Themen 4
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
L Jsp: Vorherige Webseite ermitteln Allgemeine Java-Themen 4
K Annotations der aufrufenden Methode ermitteln Allgemeine Java-Themen 11
S per Mausklick Position ermitteln Allgemeine Java-Themen 8
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
K Datum ermitteln Allgemeine Java-Themen 4
R Array Schnittmenge performant ermitteln Allgemeine Java-Themen 8
M Klassen in vielen Jars ermitteln Allgemeine Java-Themen 2
c_sidi90 Routine zum ermitteln des Standardablageverzeichnisses Allgemeine Java-Themen 2
R Windows ermitteln ob Administratorrechte vorhanden Allgemeine Java-Themen 17
E Java Browser ermitteln? Allgemeine Java-Themen 6
F Pfad der laufenden JAR ermitteln (mit Archivnamen) Allgemeine Java-Themen 2
E Java Version Details ermitteln Allgemeine Java-Themen 5
E Performace/Ausführungszeit von Methoden ermitteln Allgemeine Java-Themen 4
J Anwendungen ermitteln ? Allgemeine Java-Themen 5
Iron Monkey Lautstärkeregelung ermitteln Allgemeine Java-Themen 2
A Reisezeiten ermitteln Allgemeine Java-Themen 9
Z Position/Größe von Windows-Fenstern ermitteln Allgemeine Java-Themen 12
S Konstruktor ermitteln Allgemeine Java-Themen 3
Iron Monkey Anzahl der Monate ermitteln Allgemeine Java-Themen 17
multiholle Aufrufer einer Funktion ermitteln Allgemeine Java-Themen 13
FoolMoon Elegante Möglichkeit die kleinste Zahl zu ermitteln. Allgemeine Java-Themen 7
T Pfad Anwendungsdaten unter Windows ermitteln Allgemeine Java-Themen 3
D Häufigkeit eines Zeichens ermitteln Allgemeine Java-Themen 5
H2SO3- Pixel länge von String ermitteln Allgemeine Java-Themen 4
D Parametername ermitteln Allgemeine Java-Themen 10
T Nicht verwendete Klassen in Projekten ermitteln? Allgemeine Java-Themen 2
data89 [Kurze Frage] Ähnlichkeit zweier Strings ermitteln Allgemeine Java-Themen 19
T zu Beginn der main: Heap space ermitteln und hochsetzen Allgemeine Java-Themen 11
M Grösse von BorderLayout.CENTER ermitteln Allgemeine Java-Themen 8
G Ermitteln des aufrufenden Objekts Allgemeine Java-Themen 5
G Zeigeranzahl ermitteln Allgemeine Java-Themen 10
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
D Ahängige Bibliotheken (JARs) ermitteln Allgemeine Java-Themen 6
G restlichen freien Speicher ermitteln? Allgemeine Java-Themen 3
S Hintergrundname eines Buttons ermitteln Allgemeine Java-Themen 3
T Eigene PID ermitteln! Allgemeine Java-Themen 3
M Aus Anzahl Tagen Datum ermitteln Allgemeine Java-Themen 8
S Nicht aufgerufene Methoden in Eclipse ermitteln Allgemeine Java-Themen 18
G größten gemeinsamen Teiler ermitteln Allgemeine Java-Themen 11
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
J zeit überscheidungen ermitteln Allgemeine Java-Themen 6
G PPI von Monitor ermitteln Allgemeine Java-Themen 9
Y Mit Java Betriebssystem ermitteln Allgemeine Java-Themen 6
J Kann eigene Klasse nicht ermitteln Allgemeine Java-Themen 4
O Inhalt vom JTextfield im DebugMode ermitteln? Allgemeine Java-Themen 2
A Jahr ermitteln Allgemeine Java-Themen 2
A Installierte Runtime ermitteln Allgemeine Java-Themen 3
M Nummer eine Componente in JScrollPane ermitteln Allgemeine Java-Themen 4
C Pixelanzahl eines Strings ermitteln Allgemeine Java-Themen 12
G genauen Typ einer generischen Klasse zur Laufzeit ermitteln Allgemeine Java-Themen 2
J Speicherverbrauch des Systems ermitteln Allgemeine Java-Themen 4
M Zeit eines rechners im netzwerk ermitteln Allgemeine Java-Themen 6
F Implementierte Interfaces ermitteln Allgemeine Java-Themen 6
M Bibliotheksname zur Laufzeit ermitteln (Classloader) Allgemeine Java-Themen 7
foobar Angemeldeten Systembenutzer ermitteln Allgemeine Java-Themen 8
P Java installationsverzeichnis ermitteln, wie? Allgemeine Java-Themen 4
C RTF - Dateipfad ermitteln Allgemeine Java-Themen 4
U Arbeitsspeicher ermitteln? Allgemeine Java-Themen 18
W java.io.file Originalziel bei .lnk ermitteln? Allgemeine Java-Themen 5
T OutputStream - Prozente ermitteln Allgemeine Java-Themen 3
M Den Pfad ermitteln aus dem die .jar Datei gestartet wurde Allgemeine Java-Themen 2
I Anwendungspfad ermitteln Allgemeine Java-Themen 4
A Reflection - Variablen innerhalb einer Methode ermitteln Allgemeine Java-Themen 9
S Programmname ermitteln Allgemeine Java-Themen 6
W Beziehungen zwischen Usern ermitteln Allgemeine Java-Themen 2
vogella Version von Java ermitteln Allgemeine Java-Themen 2
F JRE Version ermitteln Allgemeine Java-Themen 2
G Dateigröße ermitteln Allgemeine Java-Themen 4
H Speicheverbrauch einer Datenstruktur ermitteln Allgemeine Java-Themen 29
C Generic Type ermitteln Allgemeine Java-Themen 3
R Menge an Bytes eines OutputStreams ermitteln. Allgemeine Java-Themen 6
R Fileendung ermitteln Allgemeine Java-Themen 2
G datentyp ermitteln Allgemeine Java-Themen 8
K Java Version ermitteln (über System.getProperty hinaus) Allgemeine Java-Themen 6
M Pfad zur Klasse ermitteln Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben