成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 8 新特性之Optional類

Little_XM / 1223人閱讀

摘要:概述簡介類是一個(gè)容器類,代表一個(gè)值存在或不存在,原來用表示一個(gè)值不存在,現(xiàn)在可以更好的表達(dá)這個(gè)概念,并且可以避免空指針異常。否則返回字符串長度為與類似,要求返回值必須是字符串長度為本文首發(fā)于凌風(fēng)博客新特性之類作者凌風(fēng)

1. 概述 1.1 簡介

Optional 類(java.util.Optional)是一個(gè)容器類,代表一個(gè)值存在或不存在,原來用 null 表示一個(gè)值不存在,現(xiàn)在 Optional 可以更好的表達(dá)這個(gè)概念,并且可以避免空指針異常。

Optional 容器類的常用方法

of(T t) 創(chuàng)建一個(gè) Optional 實(shí)例

get() 獲取容器中的對象

empty() 創(chuàng)建一個(gè)空的 Optional 實(shí)例

ofNullable(T t) 若 t 不為 null,創(chuàng)建 Optional 實(shí)例,否則創(chuàng)建空實(shí)例

isPresent() 判斷是否包含值

orElse(T t) 如果調(diào)用對象包含值,返回該值,否則返回 t

orElseGet(Supplier s) 如果調(diào)用對象包含值,返回該值,否則返回 s 獲取的值

map(Function f) 如果有值對其處理,并返回處理后的 Optional。否則返回 Optional.empty()

flatMap(Function mapper) 與 map 類似,要求返回值必須是 Optional

2. Optional 容器類的常用方法 2.1 of(T t) 創(chuàng)建一個(gè) Optional 實(shí)例
@Test
public void t1() {
    Optional op = Optional.of(new String("ling"));
    String emp = op.get();
    System.out.println(emp);
}
2.2 empty() 創(chuàng)建一個(gè)空的 Optional 實(shí)例
@Test
public void t2() {
    Optional op = Optional.empty();
    System.out.println(op.get());
}

當(dāng)創(chuàng)建一個(gè)空的 Optional 容器時(shí),再使用 get() 方法會報(bào)獲取不到值的異常 java.util.NoSuchElementException: No value present

2.3 ofNullable(T t) 若 t 不為 null,創(chuàng)建 Optional 實(shí)例,否則創(chuàng)建空實(shí)例
@Test
public void t3() {
    Optional op = Optional.ofNullable(null);
    System.out.println(op.get());
}

ofNullable 在使用 null 創(chuàng)建容器的時(shí)候,同樣會拋出 java.util.NoSuchElementException: No value present 異常

2.4 isPresent() 判斷是否包含值
@Test
public void t4() {
    Optional op = Optional.ofNullable(new String("ling"));
    // 有值就獲取,沒值就什么都不做
    if (op.isPresent()) {
        System.out.println(op.get());
    }
}
2.5 orElse(T t) 如果調(diào)用對象包含值,返回該值,否則返回 t
@Test
public void t5() {
    Optional op = Optional.ofNullable(null);
    String str = op.orElse("feng");
    System.out.println(str);
}
2.6 orElseGet(Supplier s) 如果調(diào)用對象包含值,返回該值,否則返回 s 獲取的值
@Test
public void t6() {
    Optional op = Optional.ofNullable(null);
    String str = op.orElseGet(() -> new String("feng"));
    System.out.println(str);
}
2.7 map(Function f) 如果有值對其處理,并返回處理后的 Optional。否則返回 Optional.empty()
@Test
public void t8() {
    Optional op = Optional.ofNullable("lingfeng");
    Optional len = op.map((s) -> s.length());
    System.out.println("字符串長度為 : " + len.get());
}
2.8 flatMap(Function mapper) 與 map 類似,要求返回值必須是 Optional
@Test
public void t9() {
    Optional op = Optional.ofNullable("lingfeng");
    Optional len = op.flatMap((s) -> Optional.of(s.length()));
    System.out.println("字符串長度為 : " + len.get());
}
本文首發(fā)于凌風(fēng)博客:Java 8 新特性之Optional類
作者:凌風(fēng)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72781.html

相關(guān)文章

  • Java8特性Optional

    摘要:上一篇小樂帶大家了解了新特性之,接下來將會繼續(xù)述說新特性之類是一個(gè)容器類,代表一個(gè)值存在或不存在,原來用表示一個(gè)值不存在,現(xiàn)在可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常。如果有值則將其返回,否則拋出。隱士地其中進(jìn)行了判斷。 上一篇小樂帶大家了解了Java8新特性之Stream,接下來將會繼續(xù)述說Java新特性之Optional showImg(https://segmentfaul...

    stackfing 評論0 收藏0
  • Java核心技術(shù)教程整理,長期更

    以下是Java技術(shù)棧微信公眾號發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個(gè)方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識 Java父類強(qiáng)制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識碼UUID的介紹及使用 字符串...

    Anchorer 評論0 收藏0
  • Java特性總覽

    摘要:新特性總覽標(biāo)簽本文主要介紹的新特性,包括表達(dá)式方法引用流默認(rèn)方法組合式異步編程新的時(shí)間,等等各個(gè)方面。還有對應(yīng)的和類型的函數(shù)連接字符串廣義的歸約匯總起始值,映射方法,二元結(jié)合二元結(jié)合。使用并行流時(shí)要注意避免共享可變狀態(tài)。 Java8新特性總覽 標(biāo)簽: java [TOC] 本文主要介紹 Java 8 的新特性,包括 Lambda 表達(dá)式、方法引用、流(Stream API)、默認(rèn)方...

    mayaohua 評論0 收藏0
  • Java 8 特性Stream API

    摘要:簡而言之,提供了一種高效且易于使用的處理數(shù)據(jù)的方式。和以前的操作不同,操作還有兩個(gè)基礎(chǔ)的特征中間操作都會返回流對象本身。注意自己不會存儲元素不會改變源對象,相反,它們會返回一個(gè)持有結(jié)果的新操作時(shí)延遲執(zhí)行的。為集合創(chuàng)建并行流。 1. 概述 1.1 簡介 Java 8 中有兩大最為重要的改革,第一個(gè)是 Lambda 表達(dá)式,另外一個(gè)則是 Stream API(java.util.strea...

    cooxer 評論0 收藏0
  • 聊聊 Java8 以后各個(gè)版本的特性

    摘要:于是抽時(shí)間看了看以后各個(gè)版本的特性,做了一個(gè)總結(jié)。年和公開版本發(fā)布,取名為。此后對應(yīng)版本就是,。發(fā)布,是一個(gè)重大版本更新。在此之后,就是每六個(gè)月發(fā)布一次新版本。以上和參考資料聊了一些關(guān)于的歷史,下面我們看看各個(gè)版本有那些新特性。 【這是 ZY 第 11 篇原創(chuàng)技術(shù)文章】 某天在網(wǎng)上閑逛,突然看到有篇介紹 Java 11 新特性的文章,頓時(shí)心里一驚,畢竟我對于 Java 的版本認(rèn)識...

    K_B_Z 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<