Eclipse đang cho tôi một cảnh báo về hình thức sau:
Loại an toàn: Bỏ chọn truyền từ Object sang HashMap
Đây là từ một cuộc gọi đến API mà tôi không có quyền kiểm soát nào trả về Object:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Tôi muốn tránh các cảnh báo của Eclipse, nếu có thể, vì về mặt lý thuyết, chúng chỉ ra ít nhất một vấn đề về mã tiềm năng. Tôi chưa tìm thấy một cách tốt để loại bỏ cái này. Tôi có thể tự trích xuất một dòng liên quan đến một phương thức và thêm @SuppressWarnings("unchecked")
vào phương thức đó, do đó hạn chế tác động của việc có một khối mã mà tôi bỏ qua các cảnh báo. Còn lựa chọn nào tốt hơn không? Tôi không muốn tắt những cảnh báo này trong Eclipse.
Trước khi tôi đến mã, nó đơn giản hơn, nhưng vẫn gây ra cảnh báo:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Vấn đề là ở nơi khác khi bạn cố gắng sử dụng các hash bạn sẽ nhận được cảnh báo:
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
hoặc thậm chí các trường hợp Class<T>
), vì vậy bạn có thể liếc nhìn nó và biết rằng nó an toàn.