用 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.ofNullable(i).ifPresent... 与 if (i != null) [重复]