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

Posted

技术标签:

【中文标题】尝试将列表转换回数组时出现 NullPointerException【英文标题】:NullPointerException when trying to convert list back into an array 【发布时间】:2013-01-26 00:30:03 【问题描述】:

我在尝试将列表转换回数组时遇到 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) 不应该是实际代码? 【参考方案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。 (这是 仅当调用者知道时才可用于确定列表的长度 该列表不包含任何空元素。)

【讨论】:

谢谢,我目前无法测试解决方案,但我毫不怀疑这是问题所在。

以上是关于尝试将列表转换回数组时出现 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

尝试访问 ListView 的子项时出现 Nullpointer 异常

尝试将列表转换为 numpy 数组时出现 KeyError:0

尝试访问不为空的 Java ArrayList<User> 时出现 NullPointer

尝试在 moment.js 中转换 RFC2822 日期时出现“弃用警告:时刻构造回退到 js 日期”

Android Studio 4.2.1 启动时出现 NullPointer 异常

在spring security dofilter身份验证方法中使用@Autowired注释时出现Nullpointer异常[关闭]