Eclipse ให้คำเตือนแก่ฉันในแบบฟอร์มต่อไปนี้:
ความปลอดภัยของประเภท: นักแสดงที่ไม่ได้ตรวจสอบจาก 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>
) ดังนั้นคุณจึงสามารถดูได้ทันทีและรู้ว่าปลอดภัย