orElse與orElseGet的對比,使用的情景不同

這兩個函數的字面區別相比大家都比較熟悉沒有必要介紹,其他很多文檔都介紹了。

 

當返回值不存在的時候,兩個函數卻別不大。但是不存在的時候是有一定區別的。就是orElseGet方法不會執行,因爲他使用的Supplier函數接口。

 

既然orElseGet有這個有點是不是可以全部使用orElseGet替換orElse呢?不是的。

 

當值是函數或者需要計算時建議使用orElseGet,當值是基礎類型值時就用orElse。

例如:

// 使用orElse的情形,數值,字符串,引用
orElse(0)
orElse("unKnown");
orElse(ref);


// 使用orElseGet函數調用
orElseGet(Collections.emptyMap);
orElseGet(Collections.emptyList);
orElseGet(RandomUtils::nextInt)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章