4

リストを配列に変換し直そうとすると、NPEが発生します。デバッグしたところ、リストにnullの余分な値が含まれていることがわかりました。

なぜ起こっているのですか、そしてもっと重要なことに、どうすれば問題を解決できますか?

List<String> attrList = new LinkedList<String>(Arrays.asList(attrArray))

//I loop through and remove unnecessary elements

 attrArray = attrList.toArray(attrArray);

//next line uses attrArray and is throwing NPE.

Here's what I found through debugging,

attrList = [1, 2, 3]

attrArray = [1, 2, 3, null]
4

1 に答える 1

10

交換してみてください

attrArray = attrList.toArray(attrArray);

attrArray = attrList.toArray(new String[attrList.size()]);

あなたが今持っているのは

List<String> attrList = new LinkedList<String>(Arrays.asList(attrArray));
// I loop through and remove unnecessary elements
attrArray = attrList.toArray(attrArray);

およびList#toArray(T[] a)州のJavaDoc(私が強調表示):

リストが指定された配列に収まり、余裕がある場合(つまり、配列にリストよりも多くの要素がある場合)、リストの最後の直後の配列の要素はに設定されnullます。(これは、リストにnull要素が含まれていないことを呼び出し元が知っている場合にのみ、リストの長さを決定するのに役立ちます。)

于 2013-02-10T22:06:18.230 に答える