J'utilise une arborescence récursive de hashmaps, en particulier Hashmap map où Object est une référence à une autre Hashmap et ainsi de suite. Ce sera passé autour d'un algorithme récursif:Java Generics Type Avertissement de sécurité avec Hashmap récursif
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());
}
}
Je sais que Object
est de type Hashmap<String, Object>
mais je suis irrité que je dois supprimer l'avertissement à l'aide @SuppressWarnings("unchecked")
.
Je serai satisfait d'une solution qui fait assert(/*entry.getValue() is of type HashMap<String, Object>*/)
ou déclenche une exception quand ce n'est pas le cas. Je suis descendu le chemin des génériques pour la sécurité du type de compilation et si je supprime l'avertissement, alors il va à l'encontre du but.
Merci pour vos commentaires, KSB
cher waxwing, J'ai fini par implémenter votre deuxième suggestion car il s'avère que j'ai besoin d'ajouter des choses supplémentaires au "nœud" plutôt qu'une simple référence à un autre hashmap. Il se sent aussi beaucoup plus naturel. Je commence tout juste à comprendre Java, donc je ne comprends pas votre première suggestion - la partie "T extends Map". Merci encore une fois, KSB –