我试图调试一些代码功能。
这与此相似
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的对象上调用一个方法,我会认为它会抛出一个错误。所有发生的事情都没有得到印刷,就是这样。事实证明该对象为空。
为什么会这样?
答案 0 :(得分:2)
似乎从object
返回的getObject()
是全局变量,它以某种方式初始化。因此object
实际上不是 null 。
这就是为什么你没有得到以下一行的NullPointerException
:
System.out.println(getobject().toString());
试试这个,NullPointerException
肯定会得到getobject().toString()
:
public Object getObject() {
return null;
}
更新:随着问题的更新,我编译了OP贴出的代码:
import org.json.JSONArray;
public class Testing {
private JSONArray array;
public void initObjects() {
this.array = new JSONArray();
}
public JSONArray getArray() {
return this.array;
}
public static void main(String args[]) {
Testing test = new Testing();
System.out.println(test.getArray().toString());
}
}
并获得以下异常:
Exception in thread "main" java.lang.NullPointerException
at Testing.main(Testing.java:16)
我从here下载了java-json.jar
。
答案 1 :(得分:0)
正如您在其中一个comment对象中提到的那样是一个json数组。所以jsonarray的toString方法可能会返回空白,如果它是空的但是已初始化。
这是javadoc中读取的内容
的toString()
public java.lang.String toString()
Make a JSON text of this JSONArray.
所以你需要检查你的初始化位置,如果你正在使用eclipse,你可以引用光标在对象上并按ctrl + shift + g。
答案 2 :(得分:0)
编辑问题后,可能会有一个解释:
JSONObject.NULL
常量与null
不同,您必须使用getObject()
将JSONObject.NULL
的返回值与equals
进行比较。