如何处理未检查的强制转换警告?Eclipse向我发出以下形式的警告:类型安全性:未选中的从对象到HashMap的强制转换这是对API的调用,我无法控制哪个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.
3 回答
沧海一幻觉
TA贡献1824条经验 获得超5个赞
@SuppressWarnings
@SuppressWarnings("unchecked")Map<String, String> myMap = (Map<String, String>) deserializeMap();
Map
<String, String>
ClassCastException
慕婉清6462132
TA贡献1804条经验 获得超2个赞
@SuppressWarnings("unchecked")Map<String, Number> map = getMap();for (String s : map.keySet());for (Number n : map.values());
添加回答
举报
0/150
提交
取消