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

2022-08-31 10:19:52

在调用对象的函数之前,我需要检查对象是否为空,以避免抛出.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...
}

答案 1

方法 4 是最好的。

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

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


答案 2

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

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

因为在逻辑&&

没有必要知道右手边是什么,结果一定是假的

首选阅读:Java逻辑运算符短路