Eclipse wyświetla mi ostrzeżenie o następującej formie:
Bezpieczeństwo typu: Niezaznaczone rzutowanie z Object na HashMap
Wynika to z wywołania interfejsu API, nad którym nie mam kontroli, który zwraca obiekt:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Jeśli to możliwe, chciałbym unikać ostrzeżeń Eclipse, ponieważ teoretycznie wskazują one przynajmniej na potencjalny problem z kodem. Jednak nie znalazłem jeszcze dobrego sposobu na wyeliminowanie tego. Mogę wyodrębnić pojedynczy wiersz związany z metodą i dodać ją @SuppressWarnings("unchecked")
do tej metody, ograniczając w ten sposób wpływ bloku kodu, w którym ignoruję ostrzeżenia. Jakieś lepsze opcje? Nie chcę wyłączać tych ostrzeżeń w Eclipse.
Zanim przyszedłem do kodu, było to prostsze, ale wciąż prowokowało ostrzeżenia:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Problem polegał na tym, że gdy próbowałeś użyć skrótu, pojawiały się ostrzeżenia:
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
Lub nawet przypadki Class<T>
), abyś mógł na nią spojrzeć i wiedzieć, że jest bezpieczny.