用 Optional#ifPresent 替换空检查的好处 [重复]

Posted

技术标签:

【中文标题】用 Optional#ifPresent 替换空检查的好处 [重复]【英文标题】:Benefit of replacing null-checks with Optional#ifPresent [duplicate] 【发布时间】:2017-08-09 12:38:08 【问题描述】:

我刚从 Java 7 迁移到 8,我的代码中到处都是 sn-ps 之类的

if (myObj != null) 
    myObj.doSomething();
    myObj.doOtherThing();

我注意到空值检查有时被认为是一种反模式,Java 8 提倡使用 Optional。让我的代码看起来像这样有什么好处吗?

Optional.ofNullable(myObj).ifPresent(obj -> 
    myObj.doSomething();
    myObj.doOtherThing();
);

可以说,它使代码更难阅读。

【问题讨论】:

相关:***.com/questions/271526/avoiding-null-statements 在很多情况下,null 是 myObj 的有效状态,因此使用断言似乎并不合适。 第二个 sn-p 不会给你买任何东西。它替换了一个简单的 if 用于一系列调用和一个 lambda。看不到好处 你是对的,在你的例子中你不应该使用Optional。链接的问题及其答案应该让您知道什么时候应该这样做。 【参考方案1】:

Optional 的一个优点是当你从一个方法返回一个Optional 时,它表明一个方法可以返回 null。当返回一个普通对象时,是否应该对返回值进行空检查并不明显。

【讨论】:

以上是关于用 Optional#ifPresent 替换空检查的好处 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

正确使用Optional.ifPresent()

Optional.ofNullable(i).ifPresent... 与 if (i != null) [重复]

Java 8 的 Optional.ifPresent 和 if-not-Present 的功能风格?

遍历可选的整数列表 ifPresent

java 8 Optional

Java 8 用 Optional 替换两个空检查