Ich benutze einen rekursiven Baum von Hashmaps, speziell Hasmapmap, wobei Objekt ein Verweis auf eine andere Hashmap ist und so weiter. Dies wird um einen rekursiven Algorithmus übergeben werden:Java Generics Type Sicherheitswarnung mit rekursivem Hashmap
foo(String filename, Hashmap<String, Object> map)
{
//some stuff here
for (Entry<String, Object> entry : map.entrySet())
{
//type warning that must be suppressed
foo(entry.getKey(), (HashMap<String, Object>)entry.getValue());
}
}
Ich weiß sicher, Object
ist vom Typ Hashmap<String, Object>
aber sind irritiert, dass ich die Warnung @SuppressWarnings("unchecked")
mit zu unterdrücken.
Ich werde mit einer Lösung zufrieden sein, die entweder eine assert(/*entry.getValue() is of type HashMap<String, Object>*/)
tut oder eine Ausnahme auslöst, wenn dies nicht der Fall ist. Ich bin die Generics-Route für Kompilierung Typ Sicherheit gegangen und wenn ich die Warnung unterdrücken, dann schlägt es den Zweck.
Vielen Dank für Ihre Kommentare, ksb
Lieber Waxwing, Ich habe meinen zweiten Vorschlag umgesetzt, weil sich herausstellt, dass ich dem "Knoten" zusätzliche Dinge hinzufügen muss, als nur einen Verweis auf einen anderen Hashmapp. Es fühlt sich auch viel natürlicher an. Ich bin gerade mit Java in den Griff, so kann ich Ihren ersten Vorschlag nicht verstehen - die "T erweitert Karte" Teil. Nochmals vielen Dank, KSB –