JDK8新特性之判空遍歷寫法
在工作中,經(jīng)常會(huì)處理各種變量,但往往會(huì)在使用變量的時(shí)候,要進(jìn)行空判斷,不然要報(bào)錯(cuò)。
Java 8 提供了判空寫法:
Optional.ofNullable(變量).orElse(默認(rèn)值);
例1:求字符串 s 的長(zhǎng)度( 為空的時(shí)候返回0 )。
常規(guī)寫法:
String s = getKey();
if (s == null) {
return 0;
} else {
return s.length();
}
Java 8 寫法:
String s = getKey();
return Optional.ofNullable(s).orElse("").length();
例2:循環(huán)遍歷集合
常規(guī)寫法:
List<String> list = getList();
if (list != null) {
for(String s: list){
System.out.println(s);
}
}
Java 8 寫法:
List<String> list = getList();
Optional.ofNullable(list).orElse(new ArrayList<>()).forEach(o -> {
System.out.println(o);
});
PS:使用Optional避免null導(dǎo)致的NullPointerException
空指針異常是導(dǎo)致Java應(yīng)用程序失敗的最常見原因。以前,為了解決空指針異常,Google公司著名的Guava項(xiàng)目引入了Optional類,Guava通過(guò)使用檢查空值的方式來(lái)防止代碼污染,它鼓勵(lì)程序員寫更干凈的代碼。受到Google Guava的啟發(fā),Optional類已經(jīng)成為Java 8類庫(kù)的一部分。Optional實(shí)際上是個(gè)容器:它可以保存類型T的值,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進(jìn)行空值檢測(cè)。
Optional.of()或者Optional.ofNullable():創(chuàng)建Optional對(duì)象,差別在于of不允許參數(shù)是null,而ofNullable則無(wú)限制。
// 參數(shù)不能是null Optional<Integer> optional1 = Optional.of(1); // 參數(shù)可以是null Optional<Integer> optional2 = Optional.ofNullable(null); // 參數(shù)可以是非null Optional<Integer> optional3 = Optional.ofNullable(2);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring Boot集成Shiro實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限的完整步驟
這篇文章主要給大家介紹了關(guān)于Spring Boot集成Shiro實(shí)現(xiàn)動(dòng)態(tài)加載權(quán)限的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題
這篇文章主要介紹了解決Spring boot整合mybatis,xml資源文件放置及路徑配置問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
springboot導(dǎo)入多個(gè)配置文件的方法實(shí)踐
Spring Boot 2.4.x引入了新的配置導(dǎo)入方式,通過(guò)spring.config.import屬性可以靈活地導(dǎo)入多種類型的配置文件,本文就來(lái)介紹一下,感興趣的可以了解一下2024-11-11
Struts2學(xué)習(xí)教程之自定義類型轉(zhuǎn)換器的方法
類型轉(zhuǎn)換器的作用是將請(qǐng)求中的字符串或字符串?dāng)?shù)組參數(shù)與action中的對(duì)象進(jìn)行相互轉(zhuǎn)換。下面這篇文章主要給大家介紹了關(guān)于Struts2學(xué)習(xí)教程之自定義類型轉(zhuǎn)換器的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-05-05
Javabean簡(jiǎn)介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Javabean簡(jiǎn)介,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
字節(jié)碼調(diào)教入口JVM?寄生插件javaagent
這篇文章主要介紹了字節(jié)碼調(diào)教入口JVM?寄生插件javaagent方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
如何對(duì)?Excel?表格中提取的數(shù)據(jù)進(jìn)行批量更新
這篇文章主要介紹了如何對(duì)Excel表格中提取的數(shù)據(jù)進(jìn)行批量更新操作,本文通過(guò)示例代碼介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-06-06

