Eclipse mi sta avvisando del seguente modulo:
Tipo di sicurezza: cast non selezionato da Object a HashMap
Questo è da una chiamata a un'API su cui non ho alcun controllo su quale restituisce Object:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Vorrei evitare gli avvisi di Eclipse, se possibile, poiché teoricamente indicano almeno un potenziale problema di codice. Tuttavia, non ho ancora trovato un buon modo per eliminarlo. Posso estrarre da sola la singola linea coinvolta in un metodo e aggiungerla @SuppressWarnings("unchecked")
a quel metodo, limitando così l'impatto di avere un blocco di codice in cui ignoro gli avvisi. Qualche opzione migliore? Non voglio disattivare questi avvisi in Eclipse.
Prima di arrivare al codice, era più semplice, ma provocava ancora avvisi:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Il problema si verificava altrove quando si tentava di utilizzare l'hash e si ricevevano avvisi:
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
esempio o addirittura di Class<T>
), in modo da poterlo guardare e sapere che è sicuro.