【发布时间】:2014-10-19 21:24:47
【问题描述】:
我有一个字符串和对象的映射,并且我从外部源获取此映射,对于特定场景,我将此对象作为
"ArrayList<LinkedHashMap<String, Double>>"
ArrayList<LinkedHashMap<String, Double>> targetDetailContainer = null;
Map<String, Object> confData = getConfData();
if (confData.containsKey("Target-Details")) {
targetDetailContainer = (ArrayList<LinkedHashMap<String, Double>>) confData
.get((Object) "Target-Details");
}
现在在我将对象投射到的最后一行
"ArrayList<LinkedHashMap<String, Double>>"
我收到警告 -
类型安全:从对象到未经检查的强制转换
"ArrayList<LinkedHashMap<String, Double>>"
我曾尝试在投射之前进行类型检查,类似这样,
if (confData.containsKey("Target-Details")
&& confData.get((Object) "Target-Details") instanceof ArrayList<?>) {
targetDetailContainer = (ArrayList<LinkedHashMap<String, Double>>) confData
.get((Object) "Target-Details");
}
但它没有奏效。请提出一些建议,我怎样才能摆脱这个警告。
【问题讨论】:
-
每当编译器无法确定对象的类型时,就会出现警告。通过使用@SuppressedWarnings(“未选中”),您是在告诉编译器“我知道我在做什么,我不需要你的建议。所以请关闭up"。那么责任就完全在你身上了
标签: java arraylist casting warnings typechecking