欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何在Java8中使用Optional干掉空指針-創(chuàng)新互聯(lián)

本篇文章為大家展示了如何在Java8中使用Optional干掉空指針,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

同江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

Optional概述

Optional 是個容器:它可以保存類型T的value,或者僅僅保存null。Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測,很好地解決了空指針異常處理的問題,比如可以使用isPresent()方法判斷value是否為null,使用get()方法獲取value值等等。

Optional的構(gòu)造方法是私有的,實例不能new,可以使用靜態(tài)方法來創(chuàng)建:

// 1、創(chuàng)建一個包裝對象值為空的Optional對象
Optional<String> optStr = Optional.empty();
// 2、創(chuàng)建包裝對象值非空的Optional對象
Optional<String> optStr1 = Optional.of("optional");
// 3、創(chuàng)建包裝對象值允許為空的Optional對象
Optional<String> optStr2 = Optional.ofNullable(null);

Optional簡單案例

看完Optional的概述,我們用一個簡單的例子說明一下:

下面這段代碼接收一個User對象,如果user為null,則拋出異?!具@是一個非常常規(guī)的避免空指針異常的做法,如果沒有這步,getName會NPE】,否則返回user的name。

 public String getName1(User user) {
 if (user == null) {
 throw new RuntimeException("user不能為null!");
 }
 return user.getName();
 }

如果使用Optional,應(yīng)該怎么去處理呢?

 public String getName2(User user) {
 return Optional.ofNullable(user) // 包裝user對象,如果user為null,則返回空的Optional對象
 .map(User::getName)
 .orElseThrow(() -> new RuntimeException("user不能為null"));// 如果有值則返回,沒有則拋出異常。
 }

Optional使用靜態(tài)的ofNullable方法將user對象進行包裝,將可能為null的user對象保護起來。

 public static <T> Optional<T> ofNullable(T value) {
 // empty() 方法 創(chuàng)建一個空的Optional對象, of對象在構(gòu)造Optional的時候,value如果weinull,會引發(fā)NPE
 return value == null ? empty() : of(value);
 }

orElseThrow方法接收一個Supplier 對象,這里我們在lambda表達式那節(jié)已經(jīng)說過了,不再贅述,感興趣可以查看:Java8的Lambda表達式,你會不?

 public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
 // 如果有值,直接返回值
 if (value != null) {
 return value;
 } else {
 // 拋出異常,這個異常Supplier接口定義
 throw exceptionSupplier.get();
 }
 }

Optional的主要方法


方法描述
empty返回一個空的 Optional 實例
filter如果值存在并且滿足提供的斷言, 就返回包含該值的 Optional 對象;否則返回一個空的 Optional 對象
map如果值存在,就對該值執(zhí)行提供的 mapping 函數(shù)調(diào)用
flatMap如果值存在,就對該值執(zhí)行提供的 mapping 函數(shù)調(diào)用,返回一個 Optional 類型的值,否則就返 回一個空的 Optional 對象
get如果該值存在,將該值用 Optional 封裝返回,否則拋出一個 NoSuchElementException 異常
ifPresent如果值存在,就執(zhí)行使用該值的方法調(diào)用,否則什么也不做
isPresent如果值存在就返回 true,否則返回 false
of將指定值用 Optional 封裝之后返回,如果該值為 null,則拋出一個 NullPointerException 異常
ofNullable將指定值用 Optional 封裝之后返回,如果該值為 null,則返回一個空的 Optional 對象
orElse如果有值則將其返回,否則返回一個默認值
orElseGet如果有值則將其返回,否則返回一個由指定的 Supplier 接口生成的值
orElseThrow如果有值則將其返回,否則拋出一個由指定的 Supplier 接口生成的異常

上述內(nèi)容就是如何在Java8中使用Optional干掉空指針,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:如何在Java8中使用Optional干掉空指針-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://www.aaarwkj.com/article46/doheeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站維護電子商務(wù)、全網(wǎng)營銷推廣、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
青青草成人免费在线公开视频| 欧美一区二区三区日韩精品| 国产粉嫩美女一区二区三| 91人妻互换一区二区| 亚洲第六页亚洲第一页| 亚洲一区二区三区国色天香| 男人喜欢看的免费视频| 哪里可以看黄色片日韩| 中文日韩av在线免费播放| 日韩不卡在线免费播放| 中文字幕乱码人妻一二三| 一区二区在线视频免费播放| 极品美女被插到高潮喷水| 92午夜福利精品视频| 草草在线成年免费视频| 日韩x级av免费在线观看| 二区三区在线欧美日韩| 中文字幕亚洲无级av| 黄色大片免费在线观看| 全黄性性激高免费放视频| 国产亚洲理论片在线观看| 精品国产无遮挡污污网站| 日本一区二区精美视频| 亚洲成人久久久av一区| 亚洲一区二区福利视频| 国产夫妻自拍在线视频| 亚洲久久精品中文字幕| 亚洲乱码日韩电影网站| 亚洲成人免费电影久久| 日韩一区二区三区91| 欧美亚洲另类麻豆综合在线| 微拍福利一区二区三区| 色吊丝日韩在线观看| 韩国理伦三级做爰观看| 高清av在线国产成人精品自拍| 亚洲日本欧美在线一区| 女同蝴蝶在线看完整版| 国产一级黄色片免费看| 精品国产女同一区二区| 欧美成人黄片免费播放| 午夜未满十八禁止观看|