Java Object null但不抛出异常

时间:2015-07-23 18:35:28

标签: java

我试图调试一些代码功能。

这与此相似

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的对象上调用一个方法,我会认为它会抛出一个错误。所有发生的事情都没有得到印刷,就是这样。事实证明该对象为空。

为什么会这样?

3 个答案:

答案 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进行比较。