Eclipse给我一个警告,如下所示:
类型安全性: 未经检查的从Object到HashMap的转换
这是从一个我无法控制其返回类型为Object的API调用中出现的警告:
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>
的实例)紧密耦合,这样您可以一眼看出它是安全的。 - Philip Guin