5

-Xlintを使用してコードをコンパイルすると、次のことがわかりました。

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

3 に答える 3

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();
}
于 2012-10-23T10:40:56.217 に答える
2

イテレータは次のようになります

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

ところで、for-eachループを使用できます。

for (ArrayList<String> sublist : msg) {
    ....            
}
于 2012-10-23T10:39:27.163 に答える
1
ArrayList<ArrayList<String>> msg = new ArrayList<ArrayList<String>>();
//add some data to msg
for (ArrayList<String> msgData : msg) {
   //do something
}
于 2012-10-23T10:41:52.270 に答える