Escribí una clase que tiene un mapa de <String, Object>
. Lo necesito para sostener objetos arbitrarios, pero al mismo tiempo a veces tengo que enviar algunos de esos objetos, por lo que voy a hacer algo así comoCasting desde Object en Java sin obtener una advertencia no marcada
HashMap<String, Object> map = new HashMap<String, Object>();
Object foo = map.get("bar");
if (foo instanceof HashMap) {
((HashMap<String, Integer>) foo).put("a", 5);
}
que da el aviso
Stuff.java:10: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.HashMap<java.lang.String,java.lang.Integer>
((HashMap<String, Integer>) foo).put("a", 5);
sospecho tiene que ver con el uso de genéricos. Puedo deshacerme del error usando @SupressWarnings ("desmarcado"), pero me preguntaba si había una mejor manera de hacerlo. O tal vez el hecho de que estoy recibiendo la advertencia significa que debería reconsiderar lo que estoy haciendo. ¿Hay algo que pueda hacer, o debería simplemente usar @SupressWarnings?
Detalles pequeños pero importantes: (excepción | error)! = Advertencia. – BalusC
Como señaló ChssPly76, esto en realidad no debería haber generado una advertencia de "lanzamiento sin verificar". Lo probé en Eclipse y de hecho no dio la advertencia particular. ¿Puedes publicar un SSCCE (una clase con un main() que solo demuestre el problema) para que podamos entender mejor qué está pasando? – BalusC