Java ArrayList的铸造<;对象>;列出<;HashMap<;整数,HashMap<;字符串,字符串>&燃气轮机&燃气轮机;

Java ArrayList的铸造<;对象>;列出<;HashMap<;整数,HashMap<;字符串,字符串>&燃气轮机&燃气轮机;,java,casting,nested-generics,Java,Casting,Nested Generics,我无法从ArrayList转换到List,如下所示 代码: import java.util.List; 导入java.util.ArrayList; 导入java.util.HashMap; 班长{ 公共静态void main(字符串[]args){ 哈希映射l1= 新的HashMap(); 哈希映射l2= 新的HashMap(); ArrayList=新建ArrayList(); 列表。添加(l1); 列表。添加(l2); 列表myList=(列表)列表; } } 更换 ArrayList&

我无法从
ArrayList
转换到
List
,如下所示

代码:

import java.util.List;
导入java.util.ArrayList;
导入java.util.HashMap;
班长{
公共静态void main(字符串[]args){
哈希映射l1=
新的HashMap();
哈希映射l2=
新的HashMap();
ArrayList=新建ArrayList();
列表。添加(l1);
列表。添加(l2);
列表myList=(列表)列表;
}
}
更换

ArrayList<Object> list = new ArrayList<Object>();
ArrayList list=new ArrayList();

List List=new ArrayList();
列表。添加(l1);
列表。添加(l2);
否则,请执行以下操作:

List <HashMap<Integer, HashMap<String, String>>> myList = new ArrayList();
for (Object obj : list) {
    myList.add((HashMap<Integer, HashMap<String, String>>) obj);
}
List myList=new ArrayList();
对于(对象对象:列表){
添加((HashMap)obj);
}

为什么不将
列表
声明为
列表
?为什么鼓励使用原始类型?我没有这个选项,因为我覆盖的方法返回列表。特别是类CrawlController的方法。@PhoenixOpenProject然后请编辑这个问题,因为您当前的代码片段有误导性。@PankajSinghal正如您和用户YCF_L user所指出的,我必须逐元素强制转换,除非我使用Java 1.8(或更高版本)中的功能。为了帮助我更好地理解这个问题,为什么当底层元素对象实际上是HashMap类型时,我不能直接将rom ArrayList转换为List?@PankajSinghal我尝试了您的第二个解决方案,但编译器报告了一个“未经检查的从对象到HashMap的转换”警告。
List <HashMap<Integer, HashMap<String, String>>> list = new ArrayList();
list.add(l1);
list.add(l2);
List <HashMap<Integer, HashMap<String, String>>> myList = new ArrayList();
for (Object obj : list) {
    myList.add((HashMap<Integer, HashMap<String, String>>) obj);
}