【发布时间】:2009-11-21 02:58:53
【问题描述】:
我写了一个类,其映射为<String, Object>。我需要它来保存任意对象,但同时有时我需要转换其中一些对象,所以我会做类似的事情
HashMap<String, Object> map = new HashMap<String, Object>();
Object foo = map.get("bar");
if (foo instanceof HashMap) {
((HashMap<String, Integer>) foo).put("a", 5);
}
给出警告
Stuff.java:10: warning: [unchecked] unchecked cast
found : java.lang.Object
required: java.util.HashMap<java.lang.String,java.lang.Integer>
((HashMap<String, Integer>) foo).put("a", 5);
我怀疑这与使用泛型有关。我可以使用@SupressWarnings("unchecked") 消除错误,但我想知道是否有更好的方法来做到这一点。或者也许我收到警告的事实意味着我应该重新考虑我在做什么。有什么我可以做的吗,还是我应该使用@SupressWarnings?
【问题讨论】:
-
小而重要的细节:(异常|错误)!=警告。
-
正如 ChssPly76 所指出的,这实际上不应该产生“未经检查的演员表”警告。我在 Eclipse 中对其进行了测试,它确实没有给出特定的警告。您能否发布一个 SSCCE(一个带有 main() 的类,纯粹展示问题),以便我们更好地了解发生了什么?