对象到ArrayList <String>未选中的强制转换

use*_*477 5 java iterator arraylist

用-Xlint编译我的代码我发现了这个:

warning: [unchecked] unchecked cast
found   : java.lang.Object
required: java.util.ArrayList<java.lang.String>
                    ArrayList<String> msgData = (ArrayList<String>)element;
Run Code Online (Sandbox Code Playgroud)

这是代码:

ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
Iterator i = msg.iterator();
while(i.hasNext()) {

    Object element = i.next();
    ArrayList<String> msgData = (ArrayList<String>)element;     
}
Run Code Online (Sandbox Code Playgroud)

演员怎么办?

mth*_*ers 4

您的迭代器也需要一个类型,如下所示:

ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
Iterator<ArrayList<String>> i = msg.iterator();
while(i.hasNext()) {
    ArrayList<String> element = i.next();
}
Run Code Online (Sandbox Code Playgroud)

附带说明一下,最好针对接口进行编程,而不是针对实现进行编程。因此,你会写:

List<List<String>> msg = new ArrayList<List<String>>();
//add some data to msg
Iterator<List<String>> i = msg.iterator();
while(i.hasNext()) {
    List<String> element = i.next();
}
Run Code Online (Sandbox Code Playgroud)