在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...
}

方法4是最好的。

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

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


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

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

因为在逻辑&&

没有必要知道右边是什么,结果必须是错误的

倾向于阅读:Java逻辑运算符短路


  • 不要捕获NullPointerException 。 这是一个不好的做法。 最好确保该值不为空。
  • 方法#4将为你工作。 它不会评估第二个条件,因为Java有短路(即,如果它们不改变布尔表达式的最终结果,将不评估后续条件)。 在这种情况下,如果逻辑AND的第一个表达式的结果为false,则不需要评估后续表达式。
  • 链接地址: http://www.djcxy.com/p/76201.html

    上一篇: Best way to check for null values in Java?

    下一篇: Best way to represent a fraction in Java?