繁体   English   中英

Java对ArrayList的转换<Map>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM