【问题标题】:NullPointerException when trying to convert list back into an array尝试将列表转换回数组时出现 NullPointerException
【发布时间】:2023-03-06 07:47:01
【问题描述】:

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

【问题讨论】:

  • 什么是attributeList?您抱怨它包含null,但您没有发布任何引用它的代码。
  • 是我还是有些行是多余的? attrArray = attrList.toArray(attrArray); 例如。我怀疑那是实际的代码。
  • @LewsTherin。所以,你错过了最后一行是吗??
  • @Ruakh。抱歉,attributeList 实际上是 attrArray。
  • @LewsTherin:为什么attrArray = attrList.toArray(attrArray) 不应该是实际代码?

标签: java arrays list nullpointerexception


【解决方案1】:

尝试替换

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。 (这是 仅当调用者知道时才可用于确定列表的长度 该列表不包含任何空元素。)

【讨论】:

  • 谢谢,我目前无法测试解决方案,但我毫不怀疑这是问题所在。
猜你喜欢
  • 2018-05-09
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
相关资源
最近更新 更多