要映射的java强制转换对象<?,?>没有未经检查的铸造警告
我正在做一个需要传递对象的项目,我想做的是,像这样将对象转换回地图
Object o = new Map<String, String>();
Map<String,String> map = (Map<String,String>)o;
这似乎和预期的一样有效,但我得到了一个
Type safety: Unchecked cast from Object to Map
我知道我可以使用@SuppressWarnings("unchecked")
,但我更愿意以一种没有警告的方式来做。如何做到这一点
# 1 楼答案
因为
Map
扩展了Object
,所以可以使用Map
引用,而不是向下转换到Object
因此,在代码中,只需替换
与
然后你的第二行(未经检查的演员阵容)就变得不必要了
# 2 楼答案
您可以检查
o
是否是带有o instanceof Map
的Map
。但是您不能检查泛型参数<String,String>
,因为它们在运行时会被删除。因此,即使使用instanceof
检查,您也会收到警告