java中orElse和orElseGet方法區(qū)別小結(jié)
前言
orElse 和 orElseGet 是 Optional 類的兩個方法,用于處理可能為空的值。
orElse()
當(dāng)optional值不存在時,調(diào)用orElse()返回orElse()的參數(shù),如果optional的值存在時返回optional的值
orElseGet()
當(dāng)optional值不存在時,調(diào)用orElseGet()中接口調(diào)用的返回值,如果optional的值存在時返回optional的值,例子如下:
import java.util.Optional; public class Main { public static void main(String[] args){ String nullValue = null; String optional = Optional.ofNullable(nullValue).orElse("Su"); System.out.println(optional); String optionalGet = Optional.ofNullable(nullValue).orElseGet(() -> "Xiao"); System.out.println(optionalGet); String nonNullOptional = Optional.ofNullable("Susan").orElse("Su"); System.out.println(nonNullOptional); String nonNullOptionalGet = Optional.ofNullable("Molly").orElseGet(() -> "Xiao"); System.out.println(nonNullOptionalGet); } }
結(jié)果:
Su
Xiao
Susan
Molly
區(qū)別
- orElse 方法:
- orElse 方法接受一個默認值作為參數(shù),并在 Optional 對象為空時返回該默認值。
- 無論 Optional 對象是否為空,orElse 方法都會執(zhí)行默認值的計算。
- 示例:
Optional<String> value = Optional.ofNullable(someValue); String result = value.orElse("default");
- orElseGet 方法:
- orElseGet 方法接受一個 Supplier 函數(shù)式接口作為參數(shù),并在 Optional 對象為空時調(diào)用該函數(shù)式接口獲取默認值。
- 只有在 Optional 對象為空時,orElseGet 方法才會執(zhí)行默認值的計算。
- 示例:
Optional<String> value = Optional.ofNullable(someValue); String result = value.orElseGet(() -> computeDefaultValue());
總結(jié)
- orElse 方法總是會計算默認值,無論 Optional 對象是否為空。
- orElseGet 方法只有在 Optional 對象為空時才會計算默認值,可以通過 Supplier 函數(shù)式接口提供延遲計算的能力。
- 在使用時,根據(jù)具體需求選擇適合的方法。如果默認值的計算是簡單的常量或已經(jīng)存在的值,可以使用 orElse 方法。如果默認值的計算涉及復(fù)雜的邏輯或需要延遲計算,可以使用 orElseGet 方法。
到此這篇關(guān)于java中orElse和orElseGet方法區(qū)別的文章就介紹到這了,更多相關(guān)java orElse和orElseGet區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SharedingSphere?自定義脫敏規(guī)則介紹
這篇文章主要介紹了SharedingSphere?自定義脫敏規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12SpringBoot獲取http數(shù)據(jù)、打印HTTP參數(shù)的4種方式
Java的話本地打斷點可以調(diào)試獲取rest入?yún)?但是在生產(chǎn)環(huán)境可能我們獲取入?yún)ⅲ℉ttp?header/parameter)可能就沒有那么的輕松了,所以本文給大家介紹了SpringBoot獲取http數(shù)據(jù)、打印HTTP參數(shù)的4種方式,需要的朋友可以參考下2024-03-03springboot 實現(xiàn)長鏈接轉(zhuǎn)短鏈接的示例代碼
短鏈接服務(wù)通過將長URL轉(zhuǎn)換成6位短碼,并存儲長短鏈接對應(yīng)關(guān)系到數(shù)據(jù)庫中,用戶訪問短鏈接時,系統(tǒng)通過查詢數(shù)據(jù)庫并重定向到原始URL,實現(xiàn)快速訪問,本文就來介紹一下如何使用,感興趣的可以了解一下2024-09-09Java?DelayQueue實現(xiàn)任務(wù)延時示例講解
DelayQueue是一個無界的BlockingQueue的實現(xiàn)類,用于放置實現(xiàn)了Delayed接口的對象,其中的對象只能在其到期時才能從隊列中取走。本文就來利用DelayQueue實現(xiàn)延時任務(wù),感興趣的可以了解一下2022-09-09學(xué)習(xí)Java正則表達式(匹配、替換、查找)
這篇文章主要介紹了Java正則表達式的匹配、替換、查找和切割等操作,對于正則表達式的匹配、替換大家已經(jīng)不陌生了吧2015-12-12SpringBoot生產(chǎn)環(huán)境打包如何去除無用依賴
這篇文章主要介紹了SpringBoot生產(chǎn)環(huán)境打包如何去除無用依賴問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09