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