Java对象为null,但未引发异常
我试着调试代码的一些功能
类似于这样
public class Testing {
private JSONArray array;
public void initObjects() {
this.array = new JSONArray()
}
public JSONArray getArray() {
return this.array;
}
然后我打电话来
Testing test = new Testing();
System.out.println(test.getArray().toString());
我否认了对象为null的事实,因为我认为如果对null对象调用方法,它会抛出错误。所发生的一切就是什么都没有被打印出来,仅此而已。结果证明该对象为空
为什么会这样
# 1 楼答案
正如您在评论中提到的,一个对象是json数组。因此,如果jsonarray的toString方法为空但已初始化,那么它可能会返回空白
这就是javadoc中读取的内容
toString()
公共java。lang.String toString()
所以,您需要检查初始化的位置,如果您使用的是eclipse,您可以将光标放在对象上,然后按ctrl+shift+g
# 2 楼答案
从
getObject()
返回的object
似乎是一个全局变量,它是以某种方式初始化的。所以object
实际上不是null这就是为什么下面这行没有
NullPointerException
试试这个,你肯定会得到
NullPointerException
的getobject().toString()
:更新:随着问题的更新,我编译了以下代码:
并获得以下异常:
我从here下载了
java-json.jar
# 3 楼答案
编辑问题后,有一个可能的解释:
JSONObject.NULL
该常数与null
不同,必须使用equals
比较getObject()
和JSONObject.NULL
的返回值