2012-10-23 15 views
5

meinen Code Arraylist Kompilieren mit -Xlint ich dies gefunden:Objekt <String> ungeprüft Guss

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

Dies ist der Code:

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

wie soll die Besetzung getan werden?

Antwort

4

Ihre Iterator braucht eine Art als auch, wie folgt aus:

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

Nebenbei bemerkt, ist es besser, auf Schnittstellen zu programmieren, nicht auf Implementierungen. So würde man schreiben:

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

sollte Ihr Iterator so etwas wie

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

Btw können Sie verwenden foreach-Schleife für sie:

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 
}