在 Java 中检查空值的最佳方法是什么?

新手上路,请多包涵

在调用对象的函数之前,我需要检查对象是否为空,以避免抛出 NullPointerException

解决此问题的最佳方法是什么?我考虑过这些方法。

哪一个是 Java 的最佳编程实践?

 // Method 1
if (foo != null) {
    if (foo.bar()) {
        etc...
    }
}

// Method 2
if (foo != null ? foo.bar() : false) {
    etc...
}

// Method 3
try {
    if (foo.bar()) {
        etc...
    }
} catch (NullPointerException e) {
}

// Method 4 -- Would this work, or would it still call foo.bar()?
if (foo != null && foo.bar()) {
    etc...
}

原文由 JamieGL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 773
2 个回答

方法4最好。

 if(foo != null && foo.bar()) {
   someStuff();
}

将使用 短路评估,这意味着如果 logical AND 的第一个条件为假,则结束。

原文由 Jared Nielsen 发布,翻译遵循 CC BY-SA 4.0 许可协议

最后一个也是最好的。即 逻辑与

  if (foo != null && foo.bar()) {
    etc...
}

因为在逻辑上 &&

不必知道右边是什么,结果一定是假的

喜欢阅读: Java 逻辑运算符短路

原文由 Suresh Atta 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题