0

これは私のコードです:

ArrayList<String> contentArray = new ArrayList<String>();

for(HashMap<ArrayList<String>, String> subTopicsEntry : subTopics){
    contentArray = (ArrayList<String>) subTopicsEntry.get("Content");
}

arraylist を java.lang.string にキャストできないというエラーが表示されます。

ここで何が問題なのですか?

私がこのようにすると:

ArrayList<?> contentArray = new ArrayList<?>();

for(HashMap<?, ?> subTopicsEntry : subTopics){
    contentArray = (ArrayList<?>) subTopicsEntry.get("Content");
}

できます

違いはなんですか ?

4

3 に答える 3

0

まず第一に、でArrays.asList()List<String>ありませんArrayList<String>

変数を次のように定義する必要があります。

List<String> contentArray = new ArrayList<String>();

しかし、ここにある問題はそれだけではありません。

于 2013-03-12T19:19:50.830 に答える
0

コメント投稿者が指摘したように、(おそらく) マップの宣言を誤っています。おそらくあなたが意味する

ArrayList<String> contentArray = new ArrayList<String>(); // this initializer is unnecessary, btw

for(HashMap<String, ArrayList<String>> subTopicsEntry : subTopics){
  contentArray = subTopicsEntry.get("Content"); // Note that a cast is no longer necessary
}

ここで本当にArrayLists が必要かどうかは疑問ですが、コードの残りの部分を確認しないと、それを言うのは困難です。

于 2013-03-12T19:31:18.590 に答える
0

私の回答コードは次のとおりです。

package Examples;

import java.util.ArrayList;
import java.util.List;

public class ExampleClass
{
private List<String> _list;

@Override
public String toString() // override default method
{
    String temp = "";
    for (String s : this._list)
    {
        temp += (temp.length() == 0 ? "" : ", ") + s;
    }
    return "ExampleClass: [" + temp + "]";
}

public ExampleClass() // initialize this example class
{
    this._list = new ArrayList<>();
    this._list.add("Hello!");
    this._list.add("Ciao!");
    this._list.add("Good morning!");
    this._list.add("Good afternoon!");
}
}

/*

// some code for using example
ExampleClass ec = new ExampleClass();
// prints next text to console:
// ExampleClass: [Hello!, Ciao!, Good morning!, Good afternoon!]
System.out.println(ec.toString());

*/

良い1日を。百合

于 2013-03-12T20:13:04.073 に答える