hashtable für unterschiedliche Typen - mit Generics

Status
Nicht offen für weitere Antworten.

boorad

Mitglied
Hallo,

ich möchte bei meinen Hashtables auf Generics umstellen. Der Compiler mahnt ja seit der Umstellung auf JDK 1.6 auch mit den Type Safety-Warnungen.
Ich habe aber eine Hashtable die unterschiedliche Objekte als Value aufnimmt. Wenn ich also folgendes ohne Generics mache geht es:
[highlight=Java]
Hashtable myHash = new Hashtable();
String sKey1 = "bla";
String sVal1 = "huhu";
String sKey2 = "bla";
int iVal2 = 5;

myHash.add(sKey1, sVal1);
myHash.add(sKey2, iVal2);
[/highlight]
logischerweise gibt es in Zeile 8 einen Fehler wenn ich die Hashtable typfest mache:
[highlight=Java]Hashtable<String, String> myHash = new Hashtable<String, String>();[/highlight]

Wie kann ich die hashtable definieren, so dass sie unterschiedliche Typen speichern kann? Ich habe irgendwo schon mal gelesen dass es gehen soll aber leider nicht wie...

Danke
Matt
 
hm, nicht schlecht, aber damit steht ja doch wieder Tür und Tor für Castingfehler offen ... kann man es nicht auf die gewünschten Typen einschränken. Ich habe mal was in der Form :
<? extends Number> gefunden - kann das weiterhelfen - das soll ja die möglichen Ableitungen einschränken...
 
Da sollte man sich aber wirklich mal fragen, wie zum Henker integer und Strings in einem HashTable gelandet sind :autsch:

Was ist denn der größte gemeinsame Teiler von Integer und String, wenn nicht Object?
 
naja das habe ich mich auch schon gefragt, ich habe halt ein Programm übernommen und muss mich da erst reinarbeiten. Da die Festlegung der Typen ja vom Kompiler gemacht wird und er vor JDK 1.5 ja immer ohne Typangaben auskommen musste wird er sicher in diesem Fall auch Object verwendet haben..
 
Nicht nur in diesem Fall. Das macht er IMMER. Der Compiler überprüft und verwendet die Typen NUR während er compiliert.
 
Nicht nur in diesem Fall. Das macht er IMMER. Der Compiler überprüft und verwendet die Typen NUR während er compiliert.
Ähm. Das ist ein blöder Satz. Sofern mit "Der Compiler" der Java-Compiler gemeint ist, so macht er eigentlich nichts anderes als zu kompilieren. Wenn er nicht läuft, verwendet er natürlich auch keine Generics. 😉

Ebenius
 
Ja, war blöd formuliert, 😳 aber ... das ist DEINE Schuld! 😛ueh:
😉
Du hast neulich den Link zu "Irgendwann wie Stevens schreiben" gepostet, den ich mir natürlich durchgelesen hatte, und aus irgendeinem Grund habe ich jetzt versucht, Passiv und Substantivierungen zu vermeiden :autsch:

Also, nochmal das, was ich eigentlich geschrieben, und dann verschlechtbessert hatte:

Nicht nur in diesem Fall. Das macht er IMMER. Die Typen werden nur während der Compilierung verwendet.

(Ich glaub' ich lass' es einfach. Im allgemeinen kann man davon ausgehen, dass ich meine was ich schreibe, und schreibe, was ich meine, und mich bemühe, Aussagen zu machen, bei denen man mir nicht widersprechen kann. Wenn jemand das nicht versteht, ist das nicht mein Problem. Ich weiß' nichtmal, wer Stevens ist :autsch: )
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben