Eclipse me está dando una advertencia de la siguiente forma:
Tipo de seguridad: conversión sin marcar de Objeto a HashMap
Esto es de una llamada a una API sobre la que no tengo control sobre qué devuelve Object:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Me gustaría evitar las advertencias de Eclipse, si es posible, ya que teóricamente indican al menos un posible problema de código. Sin embargo, todavía no he encontrado una buena manera de eliminarlo. Puedo extraer la sola línea involucrada en un método por sí misma y agregarla @SuppressWarnings("unchecked")
a ese método, limitando así el impacto de tener un bloque de código donde ignoro las advertencias. ¿Alguna mejor opción? No quiero desactivar estas advertencias en Eclipse.
Antes de llegar al código, era más simple, pero aún provocaba advertencias:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
El problema estaba en otra parte cuando intentabas usar el hash y recibías advertencias:
HashMap items = getItems(session);
items.put("this", "that");
Type safety: The method put(Object, Object) belongs to the raw type HashMap. References to generic type HashMap<K,V> should be parameterized.
enum
o incluso instancias de Class<T>
), para que pueda mirarlo y saber que es seguro.