Eclipse bana aşağıdaki form hakkında bir uyarı veriyor:
Tip güvenliği: Nesneden HashMap'a işaretlenmemiş döküm
Bu bir API çağrısından hangi Object döndürür üzerinde hiçbir kontrol var ki:
HashMap<String, String> getItems(javax.servlet.http.HttpSession session) {
HashMap<String, String> theHash = (HashMap<String, String>)session.getAttribute("attributeKey");
return theHash;
}
Mümkünse Eclipse uyarılarından kaçınmak istiyorum, çünkü teorik olarak en azından potansiyel bir kod problemini gösteriyorlar. Yine de bunu ortadan kaldırmak için iyi bir yol bulamadım. Tek bir yöntemi tek başına bir yönteme çıkarabilir ve @SuppressWarnings("unchecked")
bu yönteme ekleyebilirim , böylece uyarıları görmezden geldiğim bir kod bloğuna sahip olmanın etkisini sınırlayabilirim. Daha iyi seçenekler var mı? Eclipse'de bu uyarıları kapatmak istemiyorum.
Ben koda gelmeden önce, daha basit, ama yine de uyarılmış uyarılar:
HashMap getItems(javax.servlet.http.HttpSession session) {
HashMap theHash = (HashMap)session.getAttribute("attributeKey");
return theHash;
}
Sorun, hash'ı kullanmaya çalıştığınızda başka yerlerde oldu.
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
veya hatta örnekleri gibi Class<T>
) sıkıca birleştirmektir , böylece ona bakabilir ve güvenli olduğunu bilirsiniz .