Hi,
ich habe eine rein technische Verständnisfrage.
Es gibt doch nun seit einiger Zeit (seit Java 6?) die Parametrisierung (oder wie man das sonst nennen mag), also Typensicherheit. Sprich, man gibt Datenstrukturen nun an, was man hineinspeichert.
Zum Beispiel hier:
Ich verstehe nicht, wieso der Eclipse Syntaxchecker es zulässt, dass man in die get()-Methode beliebige Onjekte reinsteckt.
Eine smart-ass-Antwort würde wohl lauten: Weil der Prototyp der get()-Methode eben Object als Argument hat.
Doch ich frage nach dem "Wieso"!
Schließlich ist Eclipse doch auch intelligent genug, zu erkennen, was ich reinstecken darf. D.h. die Zeile
wird korrekter Weise als Fehler angezeigt: "Ich solle doch bitte (Integer,String) reinstecken, und nicht (Integer,Integer)".
Wieso meckert Eclipse also nicht bei folgender Zeile?
Bzw., um Spitzfindigkeiten auszuschließen: wieso beinhaltet der Prototyp von get() den Argumenttypen "Object", statt den "von mir" angegebenen Typen (in diesem Fall "Integer")?
--------
Falls dieses Thema von einem Admin gelesen werden sollte:
Könnte dieser den Titel nach "Wieso HashMap-Zugriff mit Object, statt mit MyObject?" ändern?
Ich erhalte (wie auch andere) die Meldung "Der Titel darf aus Spamschutzgründen nicht XXX sein!"
ich habe eine rein technische Verständnisfrage.
Es gibt doch nun seit einiger Zeit (seit Java 6?) die Parametrisierung (oder wie man das sonst nennen mag), also Typensicherheit. Sprich, man gibt Datenstrukturen nun an, was man hineinspeichert.
Zum Beispiel hier:
Code:
HashMap<Integer,String> mappingInt2String = new HashMap<Integer,String>();
Ich verstehe nicht, wieso der Eclipse Syntaxchecker es zulässt, dass man in die get()-Methode beliebige Onjekte reinsteckt.
Eine smart-ass-Antwort würde wohl lauten: Weil der Prototyp der get()-Methode eben Object als Argument hat.
Doch ich frage nach dem "Wieso"!
Schließlich ist Eclipse doch auch intelligent genug, zu erkennen, was ich reinstecken darf. D.h. die Zeile
Code:
mappingInt2String.put(new Integer(42), new Integer(23));
Wieso meckert Eclipse also nicht bei folgender Zeile?
Code:
mappingInt2String.get("strange...");
Bzw., um Spitzfindigkeiten auszuschließen: wieso beinhaltet der Prototyp von get() den Argumenttypen "Object", statt den "von mir" angegebenen Typen (in diesem Fall "Integer")?
--------
Falls dieses Thema von einem Admin gelesen werden sollte:
Könnte dieser den Titel nach "Wieso HashMap-Zugriff mit Object, statt mit MyObject?" ändern?
Ich erhalte (wie auch andere) die Meldung "Der Titel darf aus Spamschutzgründen nicht XXX sein!"