日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

orelse_可选的orElse vs orElseGet

發(fā)布時間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 orelse_可选的orElse vs orElseGet 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

orelse

Java 8引入了一個很棒的Optional概念,我們在博客Java 8 Optional中進行了研究 。

因此,為了簡要說明一下,Optional用于表示Optional對象或空值,而不是null引用。 這將有助于避免在我們嘗試對空引用對象執(zhí)行某些操作時發(fā)生空指針異常。

為了從可選對象訪問值 ,很少有諸如get,orELse,orElseGet之類的方法。每當(dāng)我們查看orElse與orElseGet方法時,我們總是會感到困惑。 有什么區(qū)別以及何時使用哪種方法?

當(dāng)我們概述這些方法時,我們認為可以使用orElse(functionCall())代替orElseGet(Class :: functionDef),它將獲得相同的結(jié)果。 那么為什么需要創(chuàng)建兩種不同的方法呢? 直截了當(dāng)?shù)拇鸢甘切袨榇嬖诓町?#xff0c;并且在表現(xiàn)情況下它們會產(chǎn)生巨大差異。

讓我們在此博客中詳細查看其每個行為。

orElse與orElseGet的語法

OrElse方法采用一個參數(shù),如果可選參數(shù)沒有值,則將返回該參數(shù)。

OrElseGet方法需要一個函數(shù),如果可選選項沒有值,則該函數(shù)將被執(zhí)行以返回值。

這表明orElse方法需要一個值,而orElseGet方法需要提供者的功能。

如果我們將函數(shù)傳遞給orElse方法,它將始終在執(zhí)行語句之前執(zhí)行以適合語法。 但是,在orElseGet方法的情況下,我們無法傳遞值,并且僅當(dāng)可選參數(shù)沒有值時才執(zhí)行該函數(shù)。

區(qū)別:orElse與orElseGet

如果optional為null,我們將使用以下函數(shù)獲取值

public String getFunctionForTest() { System.out.println( "\n ===== function called ===== " ); return "default value" ; }

讓我們來看看Optional對象具有空值的情況

public void orElseVSorElseGet() { Optional<String> optional = Optional.ofNullable(null); ?String orElseGetResult = optional.orElseGet( this ::getFunctionForTest); System.out.println( "value in orElseGetResult " + orElseGetResult); ?String orElseResult = optional.orElse( this .getFunctionForTest()); System.out.println( "value in orElseResult " + orElseResult); }

輸出:

===== function called ===== value in orElseGetResult default value ===== function called ===== value in orElseResult default value

正如我們看到的那樣,該期權(quán)沒有價值,我們需要采取其他形式的價值。 因此,正如預(yù)期的那樣,在兩種情況下都會調(diào)用該函數(shù)。

現(xiàn)在讓我們舉一個例子,我們在可選對象中有值,我們不需要執(zhí)行其他部分

public void orElseVSorElseGet() { Optional<String> optional = Optional.ofNullable( "value found" ); String orElseGetResult = optional.orElseGet( this ::getFunctionForTest); System.out.println( "value in orElseGetResult " + orElseGetResult); ?String orElseResult = optional.orElse( this .getFunctionForTest()); System.out.println( "value in orElseResult " + orElseResult); }

輸出:

value in orElseGetResult default value ===== function called ===== value in orElseResult default value

我們知道選項對象具有值,因此我們不需要將價值形式取為其他部分。

因此,我們希望不應(yīng)執(zhí)行該功能。 但是,在orElse方法的情況下執(zhí)行了該功能。

在上面的示例中,我們可能沒有注意到性能差異,但是當(dāng)我們有復(fù)雜的過程來采用默認值時,它將影響性能。 您可以考慮需要數(shù)據(jù)庫或網(wǎng)絡(luò)調(diào)用以獲取默認值的示例,即使您有值,它也會變慢。

在這種情況下,最好使用orElseGet方法。

在orElse的情況下,即使存在值,也將計算其他部分。 如果我們有默認的靜態(tài)值,那么orElse是一個不錯的選擇。 如果您需要默認值的計算邏輯,則應(yīng)使用orElseGet。

快速閱讀

  • 可選的OrElse方法采用參數(shù)
  • 可選中的OrElseGet方法需要供應(yīng)商函數(shù)
  • 在orElse方法的情況下,即使存在值,也要計算其他部分
  • 如果是orElseGet方法,則只有在Optional對象為空時才計算else部分
  • 對于固定值或應(yīng)使用Else方法
  • 如果需要在運行時計算值,則應(yīng)使用orElseGet

相關(guān)話題

  • Java 8可選細節(jié)
  • Java 8功能
  • Lambda表達式Java 8

翻譯自: https://www.javacodegeeks.com/2020/07/optional-orelse-vs-orelseget.html

orelse

總結(jié)

以上是生活随笔為你收集整理的orelse_可选的orElse vs orElseGet的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人影视大全 | 日韩成人一区 | 免费看裸体视频网站 | 成人亚洲一区二区 | 国产精品爽 | 无码人妻精品一区二区中文 | 国产精品午夜在线观看 | 午夜视频免费在线 | 粉色视频网站 | 中文字幕69页 | 日韩国产在线观看 | 久久性色 | sm国产在线调教视频 | 日批大全| 欧美精品一二三 | 国产精品揄拍一区二区 | 一久久| 快播久久 | 精品123区| 欧美国产91 | 人人妻人人澡人人爽欧美一区双 | 无码粉嫩虎白一线天在线观看 | 在线天堂中文 | 欧美在线色| 嫩草影院一区二区三区 | 狂野少女电影在线观看国语版免费 | 玖玖免费| 欧美黑人精品一区二区 | 桃色网址| 丰满少妇被猛烈进入高清播放 | 亚洲大片免费观看 | 国产95在线 | 成年人在线免费观看网站 | 日韩精品影视 | 国产视频精品一区二区三区 | 中文字幕在线有码 | 成人av电影免费观看 | 波多野结衣在线观看一区二区三区 | 亚洲va韩国va欧美va精品 | 日本xxxx高清 | 春色激情站 | 国产又大又黄又爽 | 人碰人人 | 成人性生活免费视频 | 新x8x8拨牐拨牐永久免费影库 | 国产精品一区二区无线 | 成人免费黄色 | 国产精品极品 | 欧美精品手机在线 | 日本网站在线免费观看 | 国产啊v在线 | 无遮挡边吃摸边吃奶边做 | 97超碰人人在线 | 国产成人av一区二区三区不卡 | 少妇无内裤下蹲露大唇视频 | 91丝袜视频| 久久久久国产视频 | 亚洲成人午夜影院 | 欧美在线性视频 | 亚洲图片88 | 亚洲一区二区三区日韩 | 可以直接在线观看的av | 欧美性猛交7777777 | 精品成人一区二区三区 | 午夜特级毛片 | 亚洲www在线 | 可以看毛片的网站 | 97人人澡| 精品无码三级在线观看视频 | 国产三级影院 | 日本美女视频一区 | 国产精品伦一区二区三级古装电影 | 美女啪啪无遮挡 | 亚洲最大成人综合网 | 国产在线视频在线观看 | 午夜在线观看av | 日本不卡视频在线观看 | 特级西西www444人体聚色 | 91精彩视频在线观看 | 国产又猛又黄又爽 | 大奶子在线观看 | 荫道bbwbbb高潮潮喷 | 精品人妻一区二区三区香蕉 | 青青操91 | 在线播放日韩av | 亚洲av片一区二区三区 | 免费欧美视频 | 少妇一级淫片免费放中国 | www.欧美色 | 欧美亚洲视频在线观看 | 欧美精品色婷婷五月综合 | 西方av在线| 1024金沙人妻一区二区三区 | 精品伦精品一区二区三区视频密桃 | 国产美女视频一区二区 | 久久久久亚洲av成人无码电影 | 亚州国产精品视频 | 1000部啪啪未满十八勿入超污 | 精品少妇人妻av一区二区 |