为什么抛出NullPointerException?

时间:2010-05-04 13:21:14

标签: java

e.getCategory() != null ? e.getCategory().getName() : "";

这引发NullPointerException,我不明白为什么。谁能解释一下?

4 个答案:

答案 0 :(得分:6)

enull

答案 1 :(得分:6)

说明:

根据Java的优先规则,您的代码被解析如下:

(("\"category\":" + "\"" + e.getCategory()) != null) ? e.getCategory().getName() : ""

将整个连接( ("..." + e.getCategory()) != null)作为条件。

由于"..." + e.getCategory()永远不会null,因此代码无效。

答案 2 :(得分:1)

e是否为空?

也许你应该试试这个:

(e != null) ?
    (e.getCategory() != null) ?
        e.getCategory().getName() : 
        ""
    : ""

或者说,简化形式:

(e != null && e.getCategory() != null) ?
    e.getCategory().getName() : 
    ""

答案 3 :(得分:0)

发现解决方案......

CORRECT

bufo.append("\"category\":" + "\"" + ((e.getCategory() != null) ? e.getCategory().getName() : "") + "\",");

问题

bufo.append("\"category\":" + "\"" + e.getCategory()!=null?e.getCategory().getName():"" + "\",");