fre*_*out 0 java casting arraylist
我在Map中存储了一个ArrayList,我正在尝试将这个ArrayList返回:
//init map with data: Map<Integer, ArrayList<MyObject>>
while(iterator.hasNext()) {
Entry entry = iterator.next();
ArrayList value = (ArrayList)entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)
将entry.getValue()转换为一般的ArrayList似乎可行,但是当我尝试将其强制转换为特定的ArrayList时:
ArrayList<MyObject> value = (ArrayList<MyObject>)entry.getValue();
Run Code Online (Sandbox Code Playgroud)
编译器通过错误.某种"上次编辑警告".是否可以将它转换为我的特定ArrayList,以便我可以在之后使用For-Each-Loop循环它?
如果您正在创建这样的地图
Map<Integer, ArrayList<MyObject>> map = new HashMap<Integer, ArrayList<MyObject>>();
Run Code Online (Sandbox Code Playgroud)
你不需要施放,因此没有警告.
for(Entry<Integer, ArrayList<MyObject>> e : map.entrySet()) {
Integer key = e.getKey();
ArrayList<MyObject> value = e.getValue();
}
Run Code Online (Sandbox Code Playgroud)
泛型简介已经完成,基本上避免了这些类型的警告.使用泛型,我们应该定义我们想要存储在数据结构中的对象的"类型".因此,在检索时,Java编译器确切地知道数据结构返回的对象.