我最近看过一篇博客文章(由@java发布),表明以下代码变得越来越普遍:
Optional.ofNullable(i).ifPresent(x -> doBlah(x));
Run Code Online (Sandbox Code Playgroud)
代替:
if (i != null) {
doBlah(i);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下使用Optional对我来说显得非常尴尬,甚至忽略了变量的命名 - 后者更容易阅读,更容易用于用例(处理空值).我相信这也可以更好地捕获语义 - 我可能来自不遵守Optional试图捕获的语义的代码(如可能的副本和本Oracle文章中所述).
我没有看到一个,但有一个很好的语义原因,更喜欢Optional.isNullable方法(忽略它可能具有的性能影响取决于它的使用方式)?
Kyl*_*los 17
对于相同的代码单元来说,将一个潜在的null对象包装在Optional中仅对其进行调用没有多大意义ifPresent().
更有用的情况是API可以返回null对象而不是返回Optional.这会强制调用者以null安全的方式处理潜在的null结果.由于API和调用者是独立的代码单元,因此将对象包装在Optional中并强制调用者调用的额外工作ifPresent()不仅仅是繁忙工作,而且实际上强制执行更安全的合同以防止空指针异常.
| 归档时间: |
|
| 查看次数: |
8529 次 |
| 最近记录: |