亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JDK8新特性之判空遍歷寫(xiě)法

 更新時(shí)間:2019年10月28日 10:46:25   作者:sunnyzyq  
這篇文章主要介紹了JDK8新特性之判空遍歷寫(xiě)法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在工作中,經(jīng)常會(huì)處理各種變量,但往往會(huì)在使用變量的時(shí)候,要進(jìn)行空判斷,不然要報(bào)錯(cuò)。

Java 8 提供了判空寫(xiě)法:

Optional.ofNullable(變量).orElse(默認(rèn)值);

例1:求字符串 s 的長(zhǎng)度( 為空的時(shí)候返回0 )。

常規(guī)寫(xiě)法:

String s = getKey();
if (s == null) {
 return 0; 
} else {
 return s.length();
}

Java 8 寫(xiě)法:

String s = getKey();
return Optional.ofNullable(s).orElse("").length();

例2:循環(huán)遍歷集合

常規(guī)寫(xiě)法:

List<String> list = getList();
if (list != null) {
 for(String s: list){
   System.out.println(s);
 }
}

Java 8 寫(xiě)法:

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)用程序失敗的最常見(jiàn)原因。以前,為了解決空指針異常,Google公司著名的Guava項(xiàng)目引入了Optional類(lèi),Guava通過(guò)使用檢查空值的方式來(lái)防止代碼污染,它鼓勵(lì)程序員寫(xiě)更干凈的代碼。受到Google Guava的啟發(fā),Optional類(lèi)已經(jīng)成為Java 8類(lèi)庫(kù)的一部分。Optional實(shí)際上是個(gè)容器:它可以保存類(lèi)型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)文章

  • springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫(xiě)分離效果

    springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫(xiě)分離效果

    這篇文章主要介紹了springboot多數(shù)據(jù)源配合docker部署mysql主從實(shí)現(xiàn)讀寫(xiě)分離,通過(guò)使用docker獲取mysql鏡像,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • Java使用反射操作數(shù)組示例

    Java使用反射操作數(shù)組示例

    這篇文章主要介紹了Java使用反射操作數(shù)組,結(jié)合實(shí)例形式分析了基于java反射機(jī)制操作數(shù)組的創(chuàng)建、賦值、輸出等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-07-07
  • JPA中EntityListeners注解的使用詳解

    JPA中EntityListeners注解的使用詳解

    這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • spring boot打jar包發(fā)布的方法

    spring boot打jar包發(fā)布的方法

    這篇文章主要介紹了spring boot打jar包發(fā)布的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式

    Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式

    這篇文章主要介紹了Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 聊一聊Java中的Steam流

    聊一聊Java中的Steam流

    當(dāng)我們需要處理的數(shù)據(jù)量很大的時(shí)候,為了提高性能,就需要使用到并行處理,這樣的處理方式是很復(fù)雜的,流可以幫助開(kāi)發(fā)者節(jié)約寶貴的時(shí)間,讓以上的事情變得輕松,本文就和大家聊一聊Java中的Steam流,感興趣的同學(xué)跟著小編一起來(lái)看看吧
    2023-07-07
  • java基本教程之Thread中start()和run()的區(qū)別 java多線(xiàn)程教程

    java基本教程之Thread中start()和run()的區(qū)別 java多線(xiàn)程教程

    這篇文章主要介紹了Thread中start()和run()的區(qū)別,Thread類(lèi)包含start()和run()方法,它們的區(qū)別是什么?下面將對(duì)此作出解答
    2014-01-01
  • tk.Mybatis 插入數(shù)據(jù)獲取Id問(wèn)題

    tk.Mybatis 插入數(shù)據(jù)獲取Id問(wèn)題

    本文主要介紹了tk.Mybatis 插入數(shù)據(jù)獲取Id問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • java對(duì)象數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    java對(duì)象數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java對(duì)象數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Java Web基于Session的登錄實(shí)現(xiàn)方法

    Java Web基于Session的登錄實(shí)現(xiàn)方法

    這篇文章主要介紹了Java Web基于Session的登錄實(shí)現(xiàn)方法,涉及Java針對(duì)session的操作及表單提交與驗(yàn)證技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10

最新評(píng)論