Eclipse warnt mich vor folgendem Formular:
Typensicherheit: Deaktivierte Umwandlung von Objekt in HashMap
Dies ist von einem Aufruf einer API, über die ich keine Kontrolle habe, welche Objekt zurückgibt:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Ich möchte Eclipse-Warnungen nach Möglichkeit vermeiden, da sie theoretisch zumindest auf ein potenzielles Codeproblem hinweisen. Ich habe jedoch noch keinen guten Weg gefunden, diesen zu beseitigen. Ich kann die einzelne betroffene Zeile selbst in eine Methode extrahieren und @SuppressWarnings("unchecked")
zu dieser Methode hinzufügen , wodurch die Auswirkungen eines Codeblocks begrenzt werden, in dem ich Warnungen ignoriere. Irgendwelche besseren Optionen? Ich möchte diese Warnungen in Eclipse nicht deaktivieren.
Bevor ich zum Code kam, war es einfacher, aber dennoch provozierte Warnungen:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Das Problem war anderswo, als Sie versuchten, den Hash zu verwenden, erhielten Sie Warnungen:
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
oder sogar Instanzen von Class<T>
), damit Sie einen Blick darauf werfen und wissen, dass sie sicher ist.