2017-03-17 44 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。當返回一個通常的對象時,不知道是否應該對返回值進行空值檢查。