当前位置: 首页 > 面试题库 >

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

鲜于阳成
2023-03-14
问题内容

在调用对象的函数之前,我需要检查对象是否为null,以避免引发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();
}

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



 类似资料:
  • 问题内容: 我有一个游标,带有来自选择的值,我想根据我是否发现任何行来做点什么。 这似乎不起作用,有帮助吗? 问题答案: 您需要在使用%FOUND属性之前对游标执行FETCH。将您的代码更改为类似 请注意,您可能需要将变量添加到FETCH语句的INTO子句中,在TABLE1和TABLE2中的每一列都需要添加一个变量。还要注意,编写此游标的方式可能会获得比预期更多的返回行。因为没有指定连接条件,所以

  • 我们使用ArrayList、hashmap等集合&更多。 另外有时候我们也需要检查列表是否为空,所以我们通常会通过以下几种方式进行检查 哪种情况是最好的,或者考虑到程序执行的性能,我们需要将这些情况进行一些组合吗?

  • 问题内容: 我需要检查一组页面对象,以查看每个对象是否在其WebDriver上调用了quit()。 我编写了以下方法来检查WebDriver的状态: 问题就在这里:我不喜欢抛出异常来发现布尔值的真相,但是由于 WebDriver API 没有提供检查驱动程序是否退出的方法,因此我似乎别无选择。 所以我的问题是, 是否有更好的方法来检查WebDriver是否已退出? 我在这里找到了一个类似的问题(但

  • 问题内容: 如果我传递的字符串包含这样的逗号分隔键/值对 等 似乎有比解析然后迭代更好的方法。 根据Java中的键名从该字符串检索值的最佳方法是什么? 问题答案: 您可以创建自己的CSV解析器,虽然它不是很复杂,但是假设您使用的是标准CSV格式,那么在某些特殊情况下还是很实用的。 但是为什么要重新发明轮子… 您可以尝试查找CSV解析器,例如 打开CSV 超级CSV Apache Commons 还

  • 想象一下我有一个阶级家庭。它包含一个人员列表。每个(班级)人都有一个(班级)地址。每个(类)地址都包含一个(类)邮政编码。任何“中间”类都可以为空。 那么,有没有一种简单的方法可以在不必在每一步都检查null的情况下访问PostalCode?i、 例如,有没有办法避免以下菊花链代码?我知道没有“原生”Java解决方案,但我希望如果有人知道某个库或其他东西。(已选中Commons 不,不能改变结构。

  • 我有一个变量(testvariable),根据变量的isNull,我需要做一个方法调用,如下所示 在可选的