2012-10-23 27 views
5

编译代码才能使用-Xlint我发现这一点:对象ArrayList的<String>选中投

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

这是代码:

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;  
} 

应该如何投做些什么呢?

回答

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(); 
} 

在附注上,最好是编程到接口,而不是实现。因此,你会写:

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(); 
} 
2

你的迭代器应该是这样的

Iterator<ArrayList<String>> i = msg.iterator(); 

顺便说一句,你可以使用for-each循环吧:

for (ArrayList<String> sublist : msg) { 
    ....    
} 
1
ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>(); 
//add some data to msg 
for (ArrayList<String> msgData : msg) { 
    //do something 
}