2017-03-17 50 views
0

我刚刚从Java 7移到8和我的代码充斥着片断像惠及可选#ifPresent

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

更换空检查我注意到,空检查有时被认为是一个反模式和Java 8推广使用可选。让我的代码看起来有什么好处

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

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

+0

相关:http://stackoverflow.com/questions/271526/avoiding-null-statements – 2017-03-17 20:09:18

+0

在很多情况下,null是myObj的有效状态,所以它似乎不适合使用断言。 – Ares

+1

第二个片段不会为你购买任何东西。它取代了一个简单的,如果一连串的调用和lambda。没有看到好处 – efekctive

回答

2

Optional的优点之一是,当您从方法返回Optional时,它表示方法可以返回null。当返回一个通常的对象时,不知道是否应该对返回值进行空值检查。