2016-11-08 39 views

回答

8

someFunction()被執行,因爲它是傳遞給方法的參數,並在執行方法之前傳遞給方法的參數進行評估。爲避免執行,您應該在Supplier實例中通過someFunction()

使用orElseGet代替orElse

Optional.ofNullable(someValue).orElseGet(SomeClass::someFunction); 

Optional.ofNullable(someValue).orElseGet(()->someFunction()); 
+0

使用沒有參數的函數延遲計算喜歡的是有時被稱爲 '咚'。 –

相關問題