日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

本文介紹了對(duì)象與可選,哪個(gè)更可取?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

使用許多新方法擴(kuò)展了java.util.Objects類

Objects#requireNonNullElse

分別

Java-9中的Objects#requireNonNullElseGet()。

如果第一個(gè)參數(shù)為非空,則兩者都將返回第一個(gè)參數(shù),否則將返回第二個(gè)非空參數(shù)或Supplier.get()的非空值

jshell> String nullStr = null;
nullStr ==> null

jshell> Objects.requireNonNullElse(nullStr,"lorem ipsum");
$13 ==> "lorem ipsum"

jshell> Objects.requireNonNullElseGet(nullStr,() -> "lorem ipsum");
$14 ==> "lorem ipsum"

但新功能與Optional類Optional#orElse和Optional#orElseGet中已有的功能重疊

jshell> Optional.ofNullable(nullStr).orElse("lorem ipsum");
$17 ==> "lorem ipsum"

jshell> Optional.ofNullable(nullStr).orElseGet(() -> "lorem ipsum");
$18 ==> "lorem ipsum"

Objects中的新方法與對(duì)應(yīng)的Optional方法之間的唯一區(qū)別是供應(yīng)商的第二個(gè)參數(shù)或值必須為非空,否則Objects拋出NPE

jshell> Objects.requireNonNullElseGet(nullStr,() -> null);
|  java.lang.NullPointerException thrown: supplier.get()
|        at Objects.requireNonNull (Objects.java:246)
|        at Objects.requireNonNullElseGet (Objects.java:321)
|        at (#15:1)

jshell> Objects.requireNonNullElse(nullStr,null);
|  java.lang.NullPointerException thrown: defaultObj
|        at Objects.requireNonNull (Objects.java:246)
|        at Objects.requireNonNullElse (Objects.java:301)
|        at (#16:1)

Optional

jshell> Optional.ofNullable(nullStr).orElse(null);
$19 ==> null

jshell> Optional.ofNullable(nullStr).orElseGet(() -> null);
$20 ==> null

為什么JDK開發(fā)人員沒有更新可選中的現(xiàn)有方法
類?
他們?yōu)槭裁床灰胍粋€(gè)新的方法(它將拋出
如果第二個(gè)參數(shù)為空,則為NPE)到可選類?
現(xiàn)在我們應(yīng)該使用什么可選的或?qū)ο螅?br /> 新方法是否使對(duì)象比可選方法更可取,因?yàn)樗鼈?br /> 將立即拋出NPE,而不是稍后拋出代碼中的某個(gè)地方
就像可選?

如果我有遺留代碼,則如下所示:

String str = null; 
String result = str == null ? "other string" : str;

這只是一個(gè)方法內(nèi)部的簡(jiǎn)單檢查。我想使用最新的語(yǔ)言功能對(duì)其進(jìn)行重新分解。現(xiàn)在,請(qǐng)注意Optional.orElseObjects.requireNonNullOrElse哪個(gè)更可取?

result = Optional.ofNullable(str).orElse("other string");

result = Objects.requireNonNullOrElse(str,"other string);

推薦答案

您的問題”哪個(gè)更好?”是開發(fā)人員最喜歡的

分享到:
標(biāo)簽:可取 可選 對(duì)象
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定