Red*_*ite 5 java null nullpointerexception
我有一个Java命令,如下所示:
Foo f = new Foo();
String string = f.format(new Bar().getSelection());
                       // ^ may be null
有时我的Bar对象可能返回null,这是设计的.
对我来说,自然要做的就是将命令分成多行并分别进行空检查,例如:
Foo f = new Foo();
BarSel bs = new Bar().getSelection();
String string = "";
if (bs != null) {
    string = f.format(bs);
    // continue...
}
但是,我想知道是否有办法在一行中做到这一点?是否可以内联检查对象?
我似乎记得阅读有关能够使用问号的内容,但我不记得确切的语法,我可能错了.请注意,我不是指三元运算符,尽管这是另一种有效的方法.
我想你还记得Elvis操作符(http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html),它被拒绝(https://blogs.oracle.com/darcy/从项目硬币进入/ project_coin_final_five).
然而,Jakarta Commons的NVL有类似的功能,如http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringUtils.html#defaultString(java.lang.String)尽管这些函数不是标准的java,它们最终在大多数程序中作为某些库的依赖.
当您使用有效的null结果设计函数时,您遇到的问题很常见:您必须在任何地方记录和处理特殊情况.我几乎可以向你保证,有人会在维护中弄乱这一点,导致虚假的空指针异常.这就是为什么我一般会推荐不返回null的设计.
我迟到了,但我想要类似的东西,并发现使用了 Java 8 Optional类。有问题的问题陈述的解决方案:
String string = Optional.ofNullable(bs).map(f::format).orElse("");
| 归档时间: | 
 | 
| 查看次数: | 34623 次 | 
| 最近记录: |