Eclipse给我以下形式的警告:
类型安全性:未经检查的从Object到HashMap的转换
这是从对我无法控制返回对象的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>
),这样您就可以浏览一下并知道它是安全的。