2013-02-10 22 views
4

當我嘗試將列表轉換回數組時,我收到了NPE。 我調試通過,發現我的列表正在獲得一個額外的值爲null。NullPointerException當試圖將列表轉換回數組時

爲什麼會發生,更重要的是我該如何解決這個問題?

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

什麼是'attributeList'?你抱怨說它包含一個'null',但你還沒有發佈任何引用它的代碼。 – ruakh 2013-02-10 22:03:27

+1

是我還是一些線是多餘的? 'attrArray = attrList.toArray(attrArray);'例如。我懷疑這是實際的代碼。 – 2013-02-10 22:04:04

+0

@LewsTherin。所以,你錯過了最後一行呀? – 2013-02-10 22:05:10

回答

10

嘗試

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(更換

attrArray = attrList.toArray(attrArray); 

亮點b ÿ我):

如果列表以房間指定的數組以備用(即 陣列具有比所述列表)多個元件在裝配中,陣列 在元件的端部後立即列表設置爲null。 (這是 在確定列表的長度只有在調用方知道 該列表中不包含任何null元素有用。)

+0

謝謝,我目前無法測試解決方案,但我毫不懷疑這是問題所在。 – 2013-02-10 22:14:13