中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

java8新特性Optinal的作用是什么

發布時間:2021-07-06 10:21:09 來源:億速云 閱讀:210 作者:chen 欄目:大數據

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

空指針異常可能占據了一半的異常發生率。于是oracle想用optional這類‘優雅的’解決null。想象挺美好,現實很殘酷。顯然optional并沒有使代碼變得那么優雅。看了七八篇大神的博客,不管從代碼量或者代碼思想上都沒有什么質的改變,你仍然要時刻擔心null的出現及給它相應的處理。如果你想統一處理還不如直接代碼try catch  空指針異常。在我發現它真正對代碼的改善前,暫且不推薦(不過阿里推薦,還是人家牛,聽阿里的吧)

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

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

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

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

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

2,各方法的使用 

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

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

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

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

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

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

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

到此,相信大家對“java8新特性Optinal的作用是什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黄山市| 金阳县| 清水县| 敦化市| 习水县| 方正县| 尼玛县| 宁乡县| 嘉兴市| 巧家县| 舒城县| 渝中区| 乌拉特后旗| 苍山县| 巫山县| 博白县| 房山区| 阳城县| 上饶县| 崇仁县| 济源市| 兖州市| 天峻县| 宁强县| 广南县| 岳阳市| 鄂伦春自治旗| 大渡口区| 扬州市| 呼伦贝尔市| 山阴县| 丹寨县| 奉化市| 英吉沙县| 象州县| 垦利县| 兴安盟| 定日县| 桦南县| 日土县| 东乌|