1)if(null != parentObj.childObj)
2)if(parentObj.childObj != null)
在“parentObj”为空的情况下,您是否认为“1”将避免潜在的空指针异常,而不是“2”?
答案 0 :(得分:5)
没有
如果parentObj为null,则任何调用方法或引用字段的尝试都将导致NullPointerExcepton。 !=总是评估双方。
首先检查parentObj是否为空并正确处理它。
答案 1 :(得分:5)
为什么不只是if(parentObj != null && parentObj.childObj != null)
?
答案 2 :(得分:1)
如果parentObj为null,则引用parentObj上的任何方法/字段将导致NPE。换句话说,您需要if (parentObj != null && parentObj.childObj != null)
来避免NPE。 Groovy使用safe navigation operator减少了这种(非常常见的)详细类型,这样就可以编写if (parentObj?.childObj)
。