Estoy usando un árbol recursivo de hashmaps, específicamente el mapa Hashmap donde Object es una referencia a otro Hashmap, y así sucesivamente. Esto se pasa alrededor de un algoritmo recursivo:Tipo de genéricos de Java Advertencia de seguridad con Hashmap recursivo
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());
}
}
que sé con seguridad es de tipo Object
Hashmap<String, Object>
pero irritan que tengo que suprimir la advertencia usando @SuppressWarnings("unchecked")
.
Voy a estar satisfecho con una solución que hace ya sea un assert(/*entry.getValue() is of type HashMap<String, Object>*/)
o lanza una excepción cuando no lo es. Bajé por la ruta de Generics para seguridad de compilación y, si reprimo la advertencia, se frustra el objetivo.
Gracias por sus comentarios, KSB
querido waxwing, Terminé implementando su segunda sugerencia porque resulta que necesito agregar cosas adicionales al "nodo" que solo una referencia a otro hashmap. También se siente mucho más natural. Estoy empezando a comprender Java, por lo que no puedo entender su primera sugerencia: la parte "T extends Map". Gracias una vez más, KSB –