溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java8新特性O(shè)ptinal的作用是什么

發(fā)布時間:2021-07-06 10:21:09 來源:億速云 閱讀:208 作者:chen 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“java8新特性O(shè)ptinal的作用是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“java8新特性O(shè)ptinal的作用是什么”吧!

空指針異??赡苷紦?jù)了一半的異常發(fā)生率。于是oracle想用optional這類‘優(yōu)雅的’解決null。想象挺美好,現(xiàn)實很殘酷。顯然optional并沒有使代碼變得那么優(yōu)雅??戳似甙似笊竦牟┛?,不管從代碼量或者代碼思想上都沒有什么質(zhì)的改變,你仍然要時刻擔心null的出現(xiàn)及給它相應(yīng)的處理。如果你想統(tǒng)一處理還不如直接代碼try catch  空指針異常。在我發(fā)現(xiàn)它真正對代碼的改善前,暫且不推薦(不過阿里推薦,還是人家牛,聽阿里的吧)

更新------------------------------------------------------

本著求真務(wù)實的精神,今天更加詳細分析一下optional的使用方法。(根據(jù)實際開發(fā),理論玩家無視)。

1,首先是構(gòu)造方法 Optional.of(), Optional.ofNullable() ,Optional.empty()。

Optional.of():of方法在傳入的參數(shù)為null時,拋出空指針異常。許多博客都說要在確定參數(shù)不為null時使用。可要是確定參數(shù)不為null,為什么要用Optional。個人觀點,Optional,的所有方法中,可能會拋出空指針異常的,都違背了使用Optional的初衷。如get()方法。

Optional.empty():構(gòu)造一個空值值 optional,非特殊情況無使用價值。默認就使用ofNullable()方法構(gòu)造。

2,各方法的使用 

   ①isPresent() 根據(jù)是否為空返回boolean。一個挖坑又填坑的方法。直接判斷參數(shù)==null?不好嗎。

   ②ifPresent(Consumer)  在對象不為空時,執(zhí)行Consumer(函數(shù)表達式),空時不執(zhí)行。相當于if(obj==null){.....},的簡便寫法。你可能會說這也沒什么大用啊,我的硬盤又不在乎多一行代碼,再想寫個else都不行。這個。。。。你說的對。 但這已經(jīng)是Optional中比較有用的方法了。

   ③get() 獲取optional中的值,空則拋出異常。前面說了,這個方法看不出來使用價值

   ④orElse(T other) 如果為空,用other替代。同樣可用一行if替代。但你可用來裝一下

   ⑤orElseThrow  如果為空拋出異常。不想評價它

   ⑥map   如果你從一個對象中想得到第若干層的子對象,每一層都要都要空值校驗如,Obj=obj1.get("obj2").get("obj3").get("obj4");上一個get方法返回的值為null時,下一個get方法執(zhí)行時都會拋異常。于是就要寫若干層if。map則允許進行鏈式操作,在最后才處理null值。這是optional最值得使用的方法。

Optional.ofNullable(userEntity1).map(u -> u.getUsername())
           .map(name -> name.toUpperCase()).orElse(null);

到此,相信大家對“java8新特性O(shè)ptinal的作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI