尝试将列表转换回数组时出现 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异常[关闭]