尝试将列表转换回数组时,我得到了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]

最佳答案

尝试更换

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元素。)

07-27 22:42