[英]Java cast of ArrayList<Map>
不好意思地说,我对Java不太熟悉。 我正在使用eclipse作为IDE。 Eclispe抱怨我无法理解的未经检查的演员表。 请参考代码片段。 一般而言,如何制定这项权利?
public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
// check input file path
for( Object map : libertySourceFiles) {
Map<String,String> mp = (Map<String,String>) map ; // <==Eclipse complains here: Unchecked cast from Object to Map<String,String>
欢迎任何提示
罗尔夫
您可以更改for循环并在集合中使用显式类型:
for(Map<String,String> map : libertySourceFiles) {
Map<String,String> mp = map; //probably not needed any more
}
这意味着您正在执行一种编译器无法检查的强制转换。
它警告您必须检查它的安全性。
更好的解决方案是使用
for(Map<String, String> mp : libertySourceFiles) {
Eclipse抱怨,因为您想要将一个Object
转换为Map<String, String>
。 将运行变量map
的类型更改为Map<String, String>
,一切都会好起来。 这样,您甚至不需要变量mp
。
这里的问题是,您向上转换ArrayList<Map<String,String>>
元素做Object
,然后向下转换为通用类型。 解决方案很简单:
public Liberty2Server(ArrayList<Map<String,String>> libertySourceFiles , String basePath) throws FileNotFoundException , IllegalArgumentException {
// check input file path
for( Map<String,String> mp : libertySourceFiles) {
// Map<String,String> mp = (Map<String,String>) map ; Not needed anymore
....
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.