put() aber nicht get()
-
wenn ich folgendes compilieren will:
[java]
HashMap hm = new HashMap();
Vector v = new Vector(0);
v.addElement(new Integer(23));
v.addElement(new Integer(100));
v.addElement(new Integer(99));
hm.put("test", v);
Vector vv = hm.get("test");[/code]bekomme ich in der zeile wo das get() ausgeführt wird eine fehlermeldung, dass Object und Vector inkompatieble Typen sind.
Wieso ?
Wenn ich den Vector 'putten' kann muss ich ihn doch auch 'getten' können.
Bestimmt bedenke ich da irgend etwas nicht - aber nur was ?[ Dieser Beitrag wurde am 21.04.2003 um 18:56 Uhr von stevg editiert. ]
-
Ich vermute mal, dass du das element das du aus der hashmap rausholst, in den vector einfügen möchtest. Was du mit dem geschriebenen code machst, ist aber nur dass du der referenz auf die hashmap ein object übergeben möchtest.
Vector vv = new Vector();
vv.add(hm.get("test"));das sollte laufen ...
-
@Anfaenger: Für mich sieht das nicht so aus. Schließlich steckt er auch nen Vector in die HashMap!
@stevg: Du mußt das noch casten, da Java keine impliziten Downcasts macht.
-
stimmt .. ich sollte wohl alles angucken ... und nicht nur die letzte zeile
-
Der Vollständigkeit halber:
Die put-Methode erwartet als Parameter ein Objekt vom Typ "Object" - dies gilt für alle Klassen innerhalb Java, da hier alle Klassen implizit von "Object" abgeleitet sind - also beim putten kein Problem.Die get-Methode liefert konsequenterweise auch ein Objekt vom Typ "Object" zurück, da es nicht wissen kann welche Art von Objekt eingefügt wurde. Deswegen musst du als Entwickler selbst dafür Sorge tragen, dass du das was aus der Hashmap zurückkommt wieder in seine ursprüngliche Form bringst. In diesem Fall ist es so wie Gregor schon gesagt hat. Casten auf "Vector". Aber Vorsicht! Wenn diese Methode oder Klasse die du da baust an Dritte weitergegeben wird, würde ich per "instanceof" darauf prüfen, dass das was du bekommst auch den richtigen Typ besitzt. Erst dann solltest du einen Cast ausführen.
-
zänk ju
[ Dieser Beitrag wurde am 22.04.2003 um 08:54 Uhr von stevg editiert. ]