4

尝试将列表转换回数组时,我得到了 NPE。我调试了一遍,发现我的列表得到了一个额外的值为空的值。

为什么会发生,更重要的是我该如何解决这个问题?

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。(仅当调用者知道列表不包含任何空元素时,这对确定列表的长度很有用。)

于 2013-02-10T22:06:18.230 回答