为啥非空列表会抛出空指针异常?
Posted
技术标签:
【中文标题】为啥非空列表会抛出空指针异常?【英文标题】:Why does a non-empty List throw a Null Pointer Exception?为什么非空列表会抛出空指针异常? 【发布时间】:2015-09-19 04:53:05 【问题描述】:我有一个列表数组“详细信息”。
List<HistoryDetails> details
其中 HistoryDetails 是一个包含字符串的对象。
当我检查尺寸时,它给了我一个正值。
details.size()
但是当我尝试访问一个元素时,它会抛出一个空指针异常。
details.get(0).getFirstElement();
Attempt to invoke virtual method 'java.lang.String com.HistoryDetails.getFirstElement()' on a null object reference
我在检查大小的下一行调用元素。因此,不应重置任何内容。有什么问题?
【问题讨论】:
【参考方案1】:具有许多项的列表details
可以使第一项为空对象。在使用该项目之前检查 null。
if(details.get(0)!=null)
details.get(0).getFirstElement();
【讨论】:
【参考方案2】:看起来details
是List
,但List
的第一个元素为空。也就是说,它看起来像details.get(0) == null
。
【讨论】:
【参考方案3】:因为它包含 null。
Log.d("TEST", details.get(0)); //should return null
【讨论】:
【参考方案4】:这样可以避免空指针异常:
if (!details.isEmpty())
details.get(0).getFirstElement();
【讨论】:
以上是关于为啥非空列表会抛出空指针异常?的主要内容,如果未能解决你的问题,请参考以下文章
为啥grails在第一次访问hasMany关系时抛出空指针异常?
为何将未被初始化的Integer变量赋值给int变量时会抛出空指针异常?