摘要:概述簡(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
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() { Optional2.2 empty() 創(chuàng)建一個(gè)空的 Optional 實(shí)例op = Optional.of(new String("ling")); String emp = op.get(); System.out.println(emp); }
@Test public void t2() { Optionalop = 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() { Optionalop = 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() { Optional2.5 orElse(T t) 如果調(diào)用對(duì)象包含值,返回該值,否則返回 top = Optional.ofNullable(new String("ling")); // 有值就獲取,沒(méi)值就什么都不做 if (op.isPresent()) { System.out.println(op.get()); } }
@Test public void t5() { Optional2.6 orElseGet(Supplier s) 如果調(diào)用對(duì)象包含值,返回該值,否則返回 s 獲取的值op = Optional.ofNullable(null); String str = op.orElse("feng"); System.out.println(str); }
@Test public void t6() { Optional2.7 map(Function f) 如果有值對(duì)其處理,并返回處理后的 Optional。否則返回 Optional.empty()op = Optional.ofNullable(null); String str = op.orElseGet(() -> new String("feng")); System.out.println(str); }
@Test public void t8() { Optional2.8 flatMap(Function mapper) 與 map 類(lèi)似,要求返回值必須是 Optionalop = Optional.ofNullable("lingfeng"); Optional len = op.map((s) -> s.length()); System.out.println("字符串長(zhǎng)度為 : " + len.get()); }
@Test public void t9() { Optionalop = 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
摘要:上一篇小樂(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...
以下是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的介紹及使用 字符串...
摘要:新特性總覽標(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)方...
摘要:簡(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...
摘要:于是抽時(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í)...
閱讀 1719·2021-10-12 10:11
閱讀 3839·2021-09-03 10:35
閱讀 1502·2019-08-30 15:55
閱讀 2206·2019-08-30 15:54
閱讀 1047·2019-08-30 13:07
閱讀 1115·2019-08-30 11:09
閱讀 632·2019-08-29 13:21
閱讀 2718·2019-08-29 11:32