2012-10-23 16 views
5

Compilare il mio codice con -Xlint ho trovato questo:oggetto ArrayList <String> incontrollato getto

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

Questo è il codice:

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

come si dovrebbe il cast essere fatto?

risposta

4

tuo Iterator ha bisogno di un tipo così, in questo modo:

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

In una nota a margine, è meglio programmare le interfacce, non le implementazioni. Quindi, scriverebbe:

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

vostro iteratore dovrebbe essere qualcosa di simile

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

Btw si può usare per-ogni loop per esso:

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 
} 
Problemi correlati