日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Optional類的使用指南:解決空指針異常

來源: 責編: 時間:2024-02-01 12:41:35 243觀看
導讀在Java應用程序中,空指針異常是導致程序失敗的最常見原因之一。為了更加優雅地處理空指針異常,Java8引入了Optional類庫。Optional實際上是一個容器,可以保存類型T的值,或者僅僅保存null。通過使用Optional,我們能夠避免顯

在Java應用程序中,空指針異常是導致程序失敗的最常見原因之一。為了更加優雅地處理空指針異常,Java8引入了Optional類庫。Optional實際上是一個容器,可以保存類型T的值,或者僅僅保存null。通過使用Optional,我們能夠避免顯式進行空值檢測,使代碼更加清晰和健壯。uXT28資訊網——每日最新資訊28at.com

1.Optional類是什么?

Optional 類(java.util.Optional) 是一個容器類,它可以保存類型T的值,代表這個值存在。或者僅僅保存null,表示這個值不存在。原來用 null 表示一個值不存在,現在 Optional 可以更好的表達這個概念。并且可以避免空指針異常。uXT28資訊網——每日最新資訊28at.com

Optional提供很多有用的方法,這樣我們就不用顯式進行空值檢測。uXT28資訊網——每日最新資訊28at.com

2. 創建Optional對象

Java8提供了兩種方式來創建Optional對象:uXT28資訊網——每日最新資訊28at.com

  • Optional.of():of()不允許參數是null
  • Optional.ofNullable():ofNullable()則沒有限制
// 參數不能是nullOptional optional1 = Optional.of(1);// ofNullable參數可以是nullOptional optional2 = Optional.ofNullable(null);// ofNullable參數也可以不是nullOptional optional3 = Optional.ofNullable(2);

3. 判斷值是否存在

使用isPresent()方法可以判斷Optional對象中的值是否存在。uXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Integer> optional2 = Optional.ofNullable(null);System.out.println(optional1.isPresent()); // trueSystem.out.println(optional2.isPresent()); // false

4. 如果值存在,則執行操作

ifPresent(Consumer consumer)方法,可以在Optional對象保存的值不為null時執行指定的操作uXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Integer> optional2 = Optional.ofNullable(null);// 如果不是null,調用Consumeroptional1.ifPresent(value -> System.out.println("value is " + value));// null,不調用Consumeroptional2.ifPresent(value -> System.out.println("value is " + value));

輸出結果:uXT28資訊網——每日最新資訊28at.com

value is 1

5. 獲取值或默認值

orElse(value)方法,可以在Optional對象保存的值不為null時返回原來的值,否則返回指定的默認值uXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Integer> optional2 = Optional.ofNullable(null);System.out.println(optional1.orElse(1000)); // 1System.out.println(optional2.orElse(1000)); // 1000

6. 異常處理

orElseThrow()方法可以在值不存在時拋出異常,存在時什么都不做,類似于Guava的PrecoditionsuXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Integer> optional2 = Optional.ofNullable(null);optional1.orElseThrow(() -> new IllegalStateException());try {    optional2.orElseThrow(() -> new IllegalStateException());} catch (IllegalStateException e) {    e.printStackTrace();}

7. 過濾和映射操作

Optional類還提供了filter(Predicate)和map(Function)方法,用于對Optional對象中保存的值進行過濾和映射uXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Integer> optional2 = Optional.ofNullable(null);Optional<Integer> filter1 = optional1.filter(a -> a == null);Optional<Integer> filter2 = optional1.filter(a -> a == 1);Optional<Integer> filter3 = optional2.filter(a -> a == null);System.out.println(filter1.isPresent()); // falseSystem.out.println(filter2.isPresent()); // trueSystem.out.println(filter2.get().intValue() == 1); // trueSystem.out.println(filter3.isPresent()); // falseOptional<String> str1Optional = optional1.map(a -> "key" + a);Optional<String> str2Optional = optional2.map(a -> "key" + a);System.out.println(str1Optional.get()); // key1System.out.println(str2Optional.isPresent()); // false

8. flatMap操作

flatMap()方法與map()相似,不同之處在于flatMap()的mapping函數返回值必須是Optional類型uXT28資訊網——每日最新資訊28at.com

Optional<Integer> optional1 = Optional.ofNullable(1);Optional<Optional<String>> str1Optional = optional1.map(a -> Optional.of("key" + a));Optional<String> str2Optional = optional1.flatMap(a -> Optional.of("key" + a));System.out.println(str1Optional.get().get()); // key1System.out.println(str2Optional.get()); // key1

9. Optional類的方法總結

方法
uXT28資訊網——每日最新資訊28at.com

描述
uXT28資訊網——每日最新資訊28at.com

empty
uXT28資訊網——每日最新資訊28at.com

返回一個空的 Optional 實例
uXT28資訊網——每日最新資訊28at.com

of
uXT28資訊網——每日最新資訊28at.com

將指定值用 Optional 封裝之后返回,如果該值為 null,則拋出一個 NullPointerException 異常
uXT28資訊網——每日最新資訊28at.com

ofNullable
uXT28資訊網——每日最新資訊28at.com

將指定值用 Optional 封裝之后返回,如果該值為 null,則返回一個空的 Optional 對象
uXT28資訊網——每日最新資訊28at.com

orElse
uXT28資訊網——每日最新資訊28at.com

如果有值則將其返回,否則返回一個默認值
uXT28資訊網——每日最新資訊28at.com

orElseThrow
uXT28資訊網——每日最新資訊28at.com

如果有值則將其返回,否則拋出一個由指定的 Supplier 接口生成的異常
uXT28資訊網——每日最新資訊28at.com

filter
uXT28資訊網——每日最新資訊28at.com

如果值存在并且滿足提供的斷言, 就返回包含該值的 Optional 對象;否則返回一個空的 Optional 對象
uXT28資訊網——每日最新資訊28at.com

map
uXT28資訊網——每日最新資訊28at.com

如果值存在,就對該值執行提供的 mapping 函數調用
uXT28資訊網——每日最新資訊28at.com

flatMap
uXT28資訊網——每日最新資訊28at.com

如果值存在,就對該值執行提供的 mapping 函數調用,返回一個 Optional 類型的值,否則就返 回一個空的 Optional 對象
uXT28資訊網——每日最新資訊28at.com


uXT28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-70386-0.htmlOptional類的使用指南:解決空指針異常

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 因天氣情況,申通快遞對發往 12 省份快件提價:3 公斤以上每公斤漲 1-3 元

下一篇: 一文了解this指針的奧秘

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
美女被久久久| 亚洲香蕉网站| 欲色影视综合吧| 一色屋精品视频在线观看网站| 在线不卡亚洲| 一区二区免费看| 欧美一区二区免费| 免费久久99精品国产| 欧美成在线观看| 国产精品a久久久久久| 韩国av一区| 亚洲精品一区在线| 午夜精品久久久久久| 久久天天躁狠狠躁夜夜爽蜜月| 欧美精品在线极品| 国产精品中文在线| 亚洲国产精品精华液2区45| 在线亚洲免费| 久色成人在线| 欧美视频中文在线看| 韩国av一区二区三区四区| 亚洲精品一二| 久久精品亚洲一区二区三区浴池| 欧美激情国产精品| 国产欧美日韩中文字幕在线| 亚洲精品久久久久中文字幕欢迎你| 亚洲免费在线播放| 免费美女久久99| 国产欧美日韩免费看aⅴ视频| 91久久久国产精品| 久久精品av麻豆的观看方式| 欧美另类一区| 精品动漫一区| 亚洲欧美日韩国产综合在线| 欧美国产第二页| 国内成人精品一区| 亚洲一区制服诱惑| 欧美激情精品久久久久久蜜臀 | 欧美伦理91| 国产一区美女| 亚洲一区二区三区中文字幕| 欧美高清视频| 好看的日韩av电影| 亚洲欧美日韩在线观看a三区| 欧美精品1区| 1024亚洲| 久久国产手机看片| 国产精品美女一区二区| 亚洲每日更新| 男人的天堂成人在线| 国产真实久久| 午夜欧美电影在线观看| 欧美日韩在线免费| 亚洲日本欧美| 老司机67194精品线观看| 国产午夜精品视频免费不卡69堂| 在线亚洲一区观看| 欧美极品在线视频| 精品福利免费观看| 久久成人羞羞网站| 国产伦精品一区二区三区在线观看 | 亚洲精品视频一区| 免费成人av在线| 狠狠色伊人亚洲综合成人| 亚洲欧美乱综合| 国产精品国产三级国产专播品爱网| 亚洲精品久久| 欧美成人午夜77777| 在线观看日韩av| 久久蜜桃资源一区二区老牛| 国产午夜精品在线观看| 午夜精品久久久久久久99水蜜桃 | 一区二区在线观看视频在线观看| 欧美在线视频全部完| 国产伦一区二区三区色一情| 亚洲欧美日本国产专区一区| 国产精品久久久999| 亚洲伊人观看| 国产精品一区二区三区观看| 亚洲综合丁香| 国产精品影片在线观看| 午夜精品一区二区三区电影天堂| 国产精品伦子伦免费视频| 亚洲在线一区二区| 国产精品私人影院| 欧美一级视频精品观看| 国产丝袜一区二区三区| 久久国产精品久久国产精品| 国产在线乱码一区二区三区| 久久九九久久九九| 在线观看日韩精品| 欧美大胆人体视频| 日韩视频亚洲视频| 欧美性片在线观看| 亚洲欧洲av一区二区| 国产亚洲一区精品| 久久午夜精品| 亚洲日本理论电影| 国产精品va在线播放我和闺蜜| 亚洲在线视频观看| 国产自产2019最新不卡| 久久久水蜜桃av免费网站| 亚洲高清不卡| 欧美日韩美女| 午夜精品亚洲一区二区三区嫩草| 国产亚洲欧美aaaa| 免费成人美女女| 99国产精品久久久久老师| 国产精品久久久久9999| 欧美在线观看一区二区| 在线播放日韩| 欧美日韩一区不卡| 欧美在线视频网站| 亚洲国产精品美女| 国产精品久久国产愉拍| 久久av一区二区三区| **欧美日韩vr在线| 欧美日韩综合在线| 欧美一区二区在线免费播放| 一区二区亚洲精品国产| 欧美日韩亚洲一区三区| 亚洲欧美日韩一区在线| 一区免费观看| 欧美特黄一级| 久久久久国产免费免费| 亚洲美女av网站| 国产麻豆日韩| 欧美xx69| 亚洲欧美一区二区三区极速播放 | 欧美日韩的一区二区| 亚洲欧美成人综合| 在线观看亚洲| 国产精品va在线播放我和闺蜜| 欧美在线视频观看| 99热精品在线| 国内精品伊人久久久久av一坑| 欧美精品久久99久久在免费线| 亚洲欧美视频一区二区三区| 亚洲二区视频在线| 国产精品视频精品| 欧美成人精品h版在线观看| 亚洲欧美日本国产有色| 亚洲欧洲日产国产网站| 国产丝袜一区二区| 欧美日韩福利视频| 久久久久久69| 亚洲视频在线观看视频| 亚洲成色www久久网站| 国产精品蜜臀在线观看| 欧美福利视频一区| 欧美在线黄色| 亚洲小说欧美另类婷婷| 亚洲国产精品传媒在线观看| 国产精品午夜av在线| 欧美精品一区二区三| 久久精品一区| 亚洲午夜精品在线| 亚洲欧洲三级| 狠狠综合久久| 国产精品一卡二| 欧美日韩国产小视频在线观看| 久久久精品五月天| 亚洲曰本av电影| 日韩午夜电影| 亚洲国产婷婷| 国内自拍一区| 国产精品在线看| 欧美偷拍另类| 欧美日韩成人在线观看| 免费视频最近日韩| 久久久精品日韩欧美| 午夜电影亚洲| 亚洲校园激情| 在线亚洲免费| 99精品国产热久久91蜜凸| 亚洲国产精品久久久久| 黄色精品一区| 国产字幕视频一区二区| 国产精品综合久久久| 国产精品成人国产乱一区| 欧美久久综合| 欧美激情视频一区二区三区在线播放 | 欧美一区二区三区四区在线| 这里是久久伊人| 日韩一本二本av| 亚洲激情在线观看视频免费| 经典三级久久| 狠狠色噜噜狠狠狠狠色吗综合| 国产热re99久久6国产精品| 国产精品久久久久永久免费观看| 欧美日韩亚洲一区二区三区四区| 欧美激情一区二区三区在线视频| 女主播福利一区| 蜜臀av一级做a爰片久久 | 欧美体内she精视频在线观看| 欧美日韩dvd在线观看| 欧美高清在线精品一区| 免费在线欧美黄色| 巨乳诱惑日韩免费av| 久久亚洲一区| 久久久久女教师免费一区| 久久久久久9| 久久综合伊人77777麻豆| 久久一区精品|