java Optional類

Java 8 引入的 Optional 類,主要解決的問題是空指針異常(NullPointerException)

返回值/修飾符方法詳細
static Optionalempty()
返回一個空的 Optional實例。
Optional<String> stringOptional = Optional.empty();
booleanequals(Object obj)
判斷對象是否相等
Optional<UserInfo> stringOptional1 = Optional.of(user);
Optional<UserInfo> stringOptional2 = Optional.of(user);
boolean equals = stringOptional1.equals(stringOptional2);
Optionalfilter(Predicate<? super T> predicate)
根據條件篩選
UserDto user=new UserDto();
user.setKeyword(“asd”);
Optional<UserDto> optionalUserDto = Optional.of(user).filter(u->u.getKeyword().equals(“asd”));
符合條件的話,就把值賦給optionalUserDto
OptionalflatMap(Function<? super T,Optional> mapper)
如果一個值存在,應用提供的 Optional映射函數給它,返回該結果,否則返回一個空的 Optional 。
Optional<String> stringOptional = Optional.of(user).flatMap(u -> Optional.ofNullable(u.getKeyword()));
如果u.getKyword不為空,返回一個Optional對象
Tget()
如果 Optional中有一個值,返回值,否則拋出 NoSuchElementException 。
獲取Optional包含的對象,String str = stringOptional.get();
inthashCode()
返回當前值的哈希碼值(如果有的話),如果沒有值,則返回0(零)。
voidifPresent(Consumer<? super T> consumer)
如果存在值,則使用該值調用指定的消費者,否則不執行任何操作。
Optional<String> optionalValue = Optional.of(“Hello”);
optionalValue.ifPresent(value -> {
System.out.println("Value is present: " + value);
// 在這里可以對 value 進行處理
});
Optional<String> emptyOptional = Optional.empty();
emptyOptional.ifPresent(value -> {
// 這段代碼不會執行,因為 emptyOptional 中沒有值
System.out.println("Value is present: " + value);
});
booleanisPresent()
返回 true如果存在值,否則為 false 。
Optional<String> optionalValue = Optional.of(“Hello”);
//如果值存在
if(optionalValue.isPresent()) {
}
Optionalmap(Function<? super T,? extends U> mapper)
如果存在一個值,則應用提供的映射函數,如果結果不為空,則返回一個 Optional結果的 Optional 。
Optional<String> optionalValue = Optional.of(“Hello”);
String abc = optionalValue.map(u -> u).orElse(“abc”); 直接返回optionalValue,如果空返回"abc"
static Optionalof(T value)
返回具有 Optional的當前非空值的Optional。
Optional<String> abc = Optional.of(“abc”); 返回一個字符串類型的Optional對象,如果為null報錯NullPointerException
static OptionalofNullable(T value)
返回一個 Optional指定值的Optional,如果為空,則返回一個空的 Optional 。
Optional<String> abc = Optional.ofNullable(“abc”); 返回一個字符串類型的Optional對象,可以為null
TorElse(T other)
返回值如果存在,否則返回 other 。
String msg=null;
String str=Optional.ofNullable(msg).orElse(“abc”);
如果msg不為null,直接返回msg,否則返回"abc"
TorElseGet(Supplier<? extends T> other)
返回值(如果存在),否則調用 other并返回該調用的結果。
String msg=null;
String str=Optional.ofNullable(msg).orElseGet(()->“asd”);
有值的時候返回值,如果沒有值,它會執行作為參數傳入的 Supplier(供應者) 函數式接口,并將返回其執行結果:

T
orElseThrow(Supplier<? extends X> exceptionSupplier)
返回包含的值(如果存在),否則拋出由提供的供應商創建的異常。
String str=Optional.ofNullable(msg).orElseThrow(()->new RuntimeException(“null”));
對象為null時拋出一個異常
StringtoString()
返回此可選的非空字符串表示,適用于調試。

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

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

相關文章

IO流的使用(四)

對象序列化機制 概念&#xff1a;允許把內存中的Java對象轉換成與平臺無關的二進制流&#xff0c;從而允許把這種二進制流持久地保存在磁盤上&#xff0c;或通過網絡將這種二進制流傳輸到另一個網絡節點&#xff1b;當其它程序取了這種二進制流&#xff0c;就可恢復成原來的Ja…

C# OpenCvSharp DNN 部署YOLOV6目標檢測

目錄 效果 模型信息 項目 代碼 下載 C# OpenCvSharp DNN 部署YOLOV6目標檢測 效果 模型信息 Inputs ------------------------- name&#xff1a;image_arrays tensor&#xff1a;Float[1, 3, 640, 640] -------------------------------------------------------------…

一個不上進的愛好,讓我走進了計算機世界

為什么當初選擇計算機行業 當初選擇計算機專業&#xff0c;真的就是覺得學習計算機專業&#xff0c;就可以經常接觸計算機&#xff0c;可以有很多的機會可以玩游戲。 后來高考的時候&#xff0c;考試成績也不理想&#xff0c;分數就不好意思說了。但是喜從天降&#xff0c;居…

Windows Terminal的半透明效果

打開Windows Terminal的半透明效果 最終實現效果&#xff1a; 系統&#xff1a;win11 23H2 步驟&#xff1a; 1.winx打開終端 2.右鍵打開設置 3.打開外觀->亞克力材料開啟 4.默認值->外觀->透明度&#xff0c;按喜好選擇即可

Linux+Moba+虛擬機

軟件&#xff1a; VMware Workstation ProMobaXterm 簡介 是一款由VMware公司開發的強大的虛擬機軟件。它可以在單臺物理計算機上創建、運行和管理多個虛擬機&#xff0c;每個虛擬機都可以獨立運行不同的操作系統和應用程序。 功能&#xff1a; 虛擬化&#xff1a;能…

PPP協議概述與實驗示例

PPP協議概述與實驗示例 概述 PPP&#xff08;Point-to-Point Protocol&#xff09;是一種用于在點對點連接上傳輸多協議數據包的標準方法。它已經成為最廣泛使用的互聯網接入數據鏈路層協議&#xff0c;可以與各種技術結合&#xff0c;如ADSL、LAN等&#xff0c;實現寬帶接入…

如何通過內網穿透工具實現任意瀏覽器遠程訪問Linux本地zabbix web管理界面

前言 Zabbix是一個基于WEB界面的提供分布式系統監視以及網絡監視功能的企業級的開源解決方案。能監視各種網絡參數&#xff0c;保證服務器系統的安全運營&#xff1b;并提供靈活的通知機制以讓系統管理員快速定位/解決存在的各種問題。 本地zabbix web管理界面限制在只能局域…

MyBatis-Plus - 論 1 個實體類被 N 個DAO 類綁定,導致 MP 特性(邏輯刪)失效的解決方案

問題描述 最近遇到一個奇奇怪怪的問題&#xff0c;發現 Mybatis-Plus『邏輯刪』特性失效&#xff0c;而且是偶現&#xff0c;有時候可以&#xff0c;有時候又不行。于是開啟了 Debug Mybatis-Plus 源碼之旅 原因分析 我們接下來重點關注 TableInfoHelper 類 /** Copyright (…

算法:兩數之和(暴力解法和優化算法)

暴力解法&#xff1a;使用快慢指針解決&#xff0c;時間復雜度 O(n^2)&#xff0c;空間復雜度 O(n) /*** param {number[]} nums* param {number} target* return {number[]}*/ var twoSum function(nums, target) {let slow 0let fast 1// 如果慢指針沒有超過nums邊界就繼…

代理IP怎么使用?Mac蘋果系統設置http代理IP教程

代理IP是一種通過將請求轉發到另一個服務器&#xff0c;以隱藏自己的真實IP地址的服務器。使用代理IP可以保護您的隱私和安全&#xff0c;防止被跟蹤或被攻擊。在本文中&#xff0c;我們將介紹如何在Mac蘋果系統上設置http代理IP教程。 一、了解代理IP 代理IP地址是一種可以用來…

基于Java二手房交易管理系統

基于Java二手房交易管理系統 功能需求 1、房源信息管理&#xff1a;系統需要能夠記錄和管理所有房源的詳細信息&#xff0c;包括房屋地址、房屋面積、售價、房屋類型等。管理員和房東可以添加、編輯和刪除房源信息。 2、買家信息管理&#xff1a;系統需要能夠記錄和管理所有…

2023.12.9 關于 Spring Boot 事務傳播機制詳解

目錄 事務傳播機制 七大事務傳播機制 支持當前調用鏈上的事務 Propagation.REQUIRED Propagation.SUPPORTS Propagation.MANDATORY 不支持當前調用鏈上的事務 Propagation.REQUIRES_NEW Propagation.NOT_SUPPORTED Propagation.NEVER 嵌套事務 Propagation.NESTED…

蜂窩、無線設備應用 HXG-242+、PVGA-123+、PMA-5452+、PSA-39+、PSA-14+射頻放大器(IC器件)

1、HXG-242 射頻放大器 IC 無線 LAN&#xff0c;LTE 700MHz 至 2.4GHz&#xff0c;6-SMD 模塊 HXG-242&#xff08;符合RoHS規范&#xff09;是一款先進的放大器模塊&#xff0c;結合了高動態范圍MMIC技術和優化電路&#xff0c;可在聚焦頻率范圍內提供業界領先的線性度。它采…

創建并測試第一個django項目并解決過程中遇到的問題

Django 是一個高級 Python Web 框架&#xff0c;它鼓勵快速開發和簡潔、實用的設計。它由經驗豐富的開發人員構建&#xff0c;解決了 Web 開發的大部分麻煩&#xff0c;因此您可以專注于編寫應用程序&#xff0c;而無需重新發明輪子。它是免費和開源的。 目錄 一、django項目 …

Nginx 簡單入門操作

前言:之前的文章有些過就不羅嗦了。 Nginx 基礎內容 是什么? Nginx 是一個輕量級的 HTTP 服務器,采用事件驅動、異步非阻塞處理方式的服務器,它具有極好的 IO 性能,常用于 HTTP服務器(包含動靜分離)、正向代理、反向代理、負載均衡 等等. Nginx 和 Node.js 在很多方…

pdb 調試 python 代碼

pdb python的官方調試工具; 默認下載的模塊 參考文檔 pdbpdb有官方文檔, 也有源碼, 可能閱讀python源碼更容易理解; 和gdb非常相似&#xff0c;也支持擴展; 基于bdb,cmd拓展; 代碼中設置調試點(一次性調試) 好處是可以源碼級別的調試, 對于剛了解pdb又想調試子進程的比較…

大語言模型有什么意義?亞馬遜訓練自己的大語言模型有什么用?

近年來&#xff0c;大語言模型的嶄露頭角引起了廣泛的關注&#xff0c;成為科技領域的一項重要突破。而在這個領域的巔峰之上&#xff0c;亞馬遜云科技一直致力于推動人工智能的發展。那么&#xff0c;作為一家全球科技巨頭&#xff0c;亞馬遜為何會如此注重大語言模型的研發與…

解讀 | GPT-4突然“變賴“ 是莫名其妙還是另有玄機

大家好&#xff0c;我是極智視界&#xff0c;歡迎關注我的公眾號&#xff0c;獲取我的更多前沿科技分享 邀您加入我的知識星球「極智視界」&#xff0c;星球內有超多好玩的項目實戰源碼和資源下載&#xff0c;鏈接&#xff1a;https://t.zsxq.com/0aiNxERDq 事情是這樣的&#…

初學websocket有感-待研究

https://www.bilibili.com/video/BV1KN411n7WD/ 看到一半的時候就會想到以下的問題&#xff1a; 初學websocket有感-待研究 既然每一個endPoint都是對應著一個服務器和客戶端瀏覽器的連接對象&#xff0c;那么就是說要創建很多個endPoint對象咯。 一、是否回將創建的這么多…

項目經理和產品經理哪個更有發展前景?

如果是單看“錢途”的話&#xff0c;如果是在傳統行業&#xff0c;可能差不多&#xff1b;如果是在IT行業的話&#xff0c;可能更需要項目經理&#xff1b;互聯網行業的話&#xff0c;可能更需要產品經理。 項目經理跟產品經理兩個證都挺受市場歡迎的&#xff0c;兩個崗位職責…