Eclipse memberi saya peringatan tentang bentuk berikut:
Jenis keamanan: Pemain yang tidak dicentang dari Object ke HashMap
Ini dari panggilan ke API yang saya tidak punya kendali atas yang mengembalikan Objek:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Saya ingin menghindari peringatan Eclipse, jika mungkin, karena secara teoritis mereka menunjukkan setidaknya masalah kode potensial. Saya belum menemukan cara yang baik untuk menghilangkan yang satu ini. Saya dapat mengekstrak satu baris yang terlibat ke metode dengan sendirinya dan menambahkan @SuppressWarnings("unchecked")
ke metode itu, sehingga membatasi dampak memiliki blok kode di mana saya mengabaikan peringatan. Ada opsi yang lebih baik? Saya tidak ingin mematikan peringatan ini di Eclipse.
Sebelum saya sampai pada kode, itu lebih sederhana, tetapi masih memancing peringatan:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Masalah ada di tempat lain saat Anda mencoba menggunakan hash, Anda akan mendapat peringatan:
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
atau bahkan contoh Class<T>
), sehingga Anda dapat meliriknya dan mengetahui bahwa itu aman.