Затьмарення попереджає мене про таку форму:
Безпека типу: Незареєстрована передача від Object до HashMap
Це від дзвінка до API, який я не маю контролю над тим, який повертає Object:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Я хотів би уникати попереджень Eclipse, якщо це можливо, оскільки теоретично вони вказують на принаймні потенційну проблему з кодом. Я ще не знайшов хорошого способу усунути це. Я можу витягнути окремий рядок до методу сам і додати @SuppressWarnings("unchecked")
до цього методу, таким чином обмежуючи вплив наявності блоку коду, де я ігнорую попередження. Будь-які кращі варіанти? Я не хочу вимикати ці попередження в Eclipse.
Перш ніж я прийшов до коду, він був простішим, але все ж спровокував попередження:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Проблема була в іншому місці, коли ви намагалися використовувати хеш, ви отримаєте попередження:
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
або навіть екземпляри Class<T>
), так що ви можете подивитися на нього і знати, що це безпечно.