尝试将列表转换回数组时出现NullPointerException

时间:2013-02-10 22:01:20

标签: java arrays list nullpointerexception

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

1 个答案:

答案 0 :(得分: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元素。)