成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Java 8 新特性之Optional類(lèi)

Little_XM / 1274人閱讀

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

1. 概述 1.1 簡(jiǎn)介

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

Optional 容器類(lèi)的常用方法

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

get() 獲取容器中的對(duì)象

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

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

isPresent() 判斷是否包含值

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

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

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

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

2. Optional 容器類(lèi)的常用方法 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() 方法會(huì)報(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í)候,同樣會(huì)拋出 java.util.NoSuchElementException: No value present 異常

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/72781.html

相關(guān)文章

  • Java8特性Optional

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

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

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

    Anchorer 評(píng)論0 收藏0
  • Java特性總覽

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

    mayaohua 評(píng)論0 收藏0
  • Java 8 特性Stream API

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

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

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

    K_B_Z 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<