java Optional

我還沒用過java8的一些語法,有點老古董了,記錄下Optional怎么用。?

從源碼看,Optional內部持有一個對象, 有一些api對這個對象進行判空處理。?

靜態方法of ,生成Optional對象, 但這個value不能為空,因為構造器判斷value為空直接拋異常。


如果值可以為空,調用下面的ofNullable方法生成Optional。


常用方法:

1、get方法,value確定非空再調用該方法,可以強制開發處理空值。


2、isPresent、isEmpty方法, 判斷是否有值


3、ifPresent? 值非空時,傳該值執行一個操作。

public void ifPresent(Consumer<? super T> action) {if (this.value != null) {action.accept(this.value);}
}

4、ifPresentOrElse方法, 值非空時執行一個操作,否則執行另一個操作

5、filter 方法,判斷值是否滿足一個條件

6、map 方法, 轉化數據。

7、flatMap方法,同map,但會檢查轉化后的數據是否為空,轉化為null會拋異常。

8、當Optional存的值為空,則生成一個Optional(值仍然可能為空)

9、stream方法,生成流

10、orElseGet ,獲取值,值為null則生成一個值

11、 還有空值就拋異常的方法。

支持鏈式調用,可與方法引用配合使用,比較方便,


Optional.ofNullable(user).map(User::getName).filter(name -> !name.isEmpty()).orElse("Unknown");

總結:Optional 主要是對數據進行各種處理,比如空值處理,數據轉化、數據過濾、異常處理等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77459.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77459.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77459.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java面試筆記:進階】24.有哪些方法可以在運行時動態生成一個Java類?

在Java中,運行時動態生成類是實現動態編程、框架擴展(如AOP、ORM)和插件化系統的關鍵技術。 1.動態生成Java類的方法 1.從源碼生成 直接生成源碼文件:通過Java程序生成源碼并保存為文件。編譯源碼: 使用ProcessBuilder啟動javac進程進行編譯。使用Java Compiler API(ja…

基于Jamba模型的天氣預測實戰

深入探索Mamba模型架構與應用 - 商品搜索 - 京東 DeepSeek大模型高性能核心技術與多模態融合開發 - 商品搜索 - 京東 由于大氣運動極為復雜&#xff0c;影響天氣的因素較多&#xff0c;而人們認識大氣本身運動的能力極為有限&#xff0c;因此以前天氣預報水平較低 。預報員在預…

GAMES202-高質量實時渲染(Real-Time Shadows)

目錄 Shadow MappingshadowMapping的問題shadow mapping背后的數學PCF&#xff08;Percentage Closer Filtering&#xff09;PCSS&#xff08;Percentage closer soft shadows&#xff09;VSSM&#xff08;Variance Soft Shadow Mapping&#xff09;優化步驟3優化步驟1SAT&…

iphonex uniapp textarea標簽兼容性處理過程梳理

嗨&#xff0c;我是小路。今天主要和大家分享的主題是“iphonex uniapp textarea標簽兼容性處理過程梳理”。 在uniapp項目中&#xff0c;經常會使用到uniapp原生的textarea標簽&#xff0c;但在手機兼容性這塊&#xff0c;textarea并不是很好用&#xff0c;會出現一些…

C++ 區分關鍵字和標識符

1. 關鍵字&#xff08;Keywords&#xff09; 定義&#xff1a;關鍵字是編程語言預定義的具有特定意義的單詞。它們是語言的一部分&#xff0c;C編譯器具有特殊的理解規則&#xff0c;不能作為用戶自定義的標識符。作用&#xff1a;關鍵字用于定義語言結構&#xff0c;如聲明變…

杭電oj(1087、1203、1003)題解

DP 即動態規劃&#xff08;Dynamic Programming&#xff09;&#xff0c;是一種通過把原問題分解為相對簡單的子問題&#xff0c;并保存子問題的解來避免重復計算&#xff0c;從而解決復雜問題的算法策略。以下從幾個方面簡述動態規劃&#xff1a; 基本思想 動態規劃的核心在…

一鍵多環境構建——用 Hvigor 玩轉 HarmonyOS Next

引言 在 HarmonyOS Next 的應用開發中&#xff0c;常常需要針對不同環境&#xff08;測試、預發、線上&#xff09;或不同簽名&#xff08;調試、正式&#xff09;輸出多個 APP/HAP 包。雖然 HarmonyOS 提供了多目標構建&#xff08;Multi-Target Build&#xff09;能力&#…

qt/c++云對象瀏覽器

簡介 本項目為基于QT5和C11的云對象存儲可視化管理工具 源碼獲取 int main(){ printf("源碼聯系綠泡泡:%s","joyfelic"); return 0; }

【Ubuntu】提升 docker ps -a 輸出的可讀性:讓 Docker 容器狀態更清晰

提升 docker ps -a 輸出的可讀性&#xff1a;讓 Docker 容器狀態更清晰 當我們使用 docker ps -a 查看所有 Docker 容器時&#xff0c;輸出的信息通常會非常多&#xff0c;尤其是在容器數量較多時。默認輸出中包含容器 ID、名稱、鏡像、狀態、端口等信息&#xff0c;容易讓人眼…

Spring Security自定義身份認證

盡管項目啟動時&#xff0c;Spring Security會提供了默認的用戶信息&#xff0c;可以快速認證和啟動&#xff0c;但大多數應用程序都希望使用自定義的用戶認證。對于自定義用戶認證&#xff0c;Spring Security提供了多種認證方式&#xff0c;常用的有In-Memory Authentication…

在亞馬遜云服務器上部署WordPress服務

在亞馬遜云服務器上部署WordPress服務第一步&#xff1a;創建EC2實例第二步&#xff1a;初始設置與安裝第三步&#xff1a;配置MySQL與WordPress第四步&#xff1a;配置Apache與WordPress第五步&#xff1a;訪問WordPress第六步&#xff1a;測試數據庫連接第七步&#xff1a;使…

Web3.0的認知補充(去中心化)

涉及開發技術&#xff1a; Vue Web3.js Solidity 基本認知 Web3.0含義&#xff1a; 新一代互聯網思想&#xff1a;去中心化及用戶為中心的互聯網 數據&#xff1a;可讀可寫可授權 核心技術&#xff1a;區塊鏈、NFT 應用&#xff1a;互聯網上應用 NFT &…

如何修復寶可夢時時刻刻冒險無法正常工作

寶可夢的時時刻刻冒險模式是一項強大的功能&#xff0c;即使應用程序關閉&#xff0c;它也能追蹤你的步行距離。它的工作原理是將你的步數與 iOS 上的 Apple Health 或 Android 上的 Google Fit 同步。它對于孵化寶可夢蛋和賺取好友糖果至關重要&#xff0c;但一旦它停止工作&a…

redis常用集合操作命令

在 Redis 的命令行界面&#xff08;redis-cli&#xff09;中&#xff0c; Redis 的集合&#xff08;Set&#xff09;是無序的&#xff0c;且集合中的元素是唯一的。Redis 本身沒有直接提供獲取集合中某個特定屬性的命令&#xff0c;因為集合中的元素是簡單的值&#xff0c;而不…

初識數據結構——二叉樹從基礎概念到實踐應用

數據結構專欄 ?(click) 初識二叉樹&#xff1a;從基礎概念到實踐應用&#x1f333; 一、樹型結構基礎 1.1 樹的基本概念 樹是一種非線性的數據結構&#xff0c;由n(n>0)個有限節點組成一個具有層次關系的集合。它看起來像一棵倒掛的樹&#xff0c;根朝上而葉朝下。 關鍵特…

駝峰命名法(Camel Case)與匈牙利命名法(Hungarian Notation)詳解

駝峰命名法&#xff08;Camel Case&#xff09;與匈牙利命名法&#xff08;Hungarian Notation&#xff09;詳解及對比? ?1. 駝峰命名法&#xff08;Camel Case&#xff09;? ?定義? 駝峰命名法&#xff08;Camel Case&#xff09;是一種變量、函數、類等標識符的命名方…

keil 中優化等級的bug

一&#xff0c;問題描述 程序中代碼有的執行&#xff0c;有的不執行&#xff0c;仔細研究&#xff0c;查詢人工智能。 程序中printf打印后面的代碼不執行&#xff0c; 然后過幾十個函數又開始正常了。 二.分析問題 跳過函數一般又判斷和Goto等語句&#xff0c;其它的溢出和錯誤…

織夢dedecms網站如何修改上一篇下一篇的標題字數

一般情況下&#xff0c;如果你的上一篇和下一篇是2行布局就不需要限制標題的字數了&#xff0c;如果你要一行布局上一篇和下一篇標題過長就會打亂網頁布局&#xff0c;那么限制上一篇和下一篇的標題字數是需要的&#xff0c;避免頁面看起來雜亂不堪。 織夢dedecms網站如何修改…

信創系統 sudoers 權限配置實戰!從小白到高手

好文鏈接&#xff1a;實戰&#xff01;銀河麒麟 KYSEC 安全中心執行控制高級配置指南 Hello&#xff0c;大家好啊&#xff01;今天給大家帶來一篇關于信創終端操作系統中 sudoers 文件詳解的實用文章&#xff01;在 Linux 系統中&#xff0c;sudo 是一項非常重要的權限控制機制…

《明解C語言入門篇》讀書筆記四

目錄 第四章&#xff1a;程序的循環控制 第一節&#xff1a;do語句 do語句 復合語句&#xff08;程序塊&#xff09;中的聲明 讀取一定范圍內的值 邏輯非運算符 德摩根定律 德摩根定律 求多個整數的和及平均值 復合賦值運算符 后置遞增運算符和后置遞減運算符 練習…