java奇怪的抛出空指针的地方
我尝试使用以下代码检查字段是否为空:
其余的代码循环遍历对象的ArrayList,同时尝试查看某个字段是否为null,以便从列表中选择它们。这个片段是为了测试对象的某个字段是否为null
if(obj.getfield() != null)
{
//Take it out of the list
}
else
{
//Do nothing
}
然而,这条线是obj。getfield()!=每当null返回null时,它都会抛出NullPointerException。猜中原因了吗
非常感谢
编辑:obj==null返回false
# 1 楼答案
结果是
obj
是null
,因此不能调用它的方法getfield()
你不是在比较
null
和null
,你是在比较事实上,唯一的表达方式
正在抛出异常,因此是否将其与
null
进行比较并不重要# 2 楼答案
NPE的唯一合理解释是:
是
obj
在那一点上是null
obj
是否已初始化为非空obj
是否未被更改obj
,该本地obj
会隐藏具有相同名称的实例变量。。。或者类似的 价值观obj
的值来自其他地方,请找出为什么该值是null
使用
==
比较对象引用不会引发NullPointerException
(如果装箱的值是
null
,那么比较原始数值类型和装箱类型可以产生一个NPE…但是假设obj
是一个引用类型,在这里就不会发生这种情况。但是如果你足够疯狂地声明private int obj
…)如果这不能回答你的问题,那么请提供一个SSCCE来说明问题