日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java8避免null_在 Java 8 中避免 Null 检查

發布時間:2025/3/20 java 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8避免null_在 Java 8 中避免 Null 检查 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何預防 Java 中著名的 NullPointerException 異常?這是每個 Java 初學者遲早會問到的關鍵問題之一。而且中級和高級程序員也在時時刻刻規避這個錯誤。其是迄今為止 Java 以及很多其他編程語言中最流行的一種錯誤。

Null 引用的發明者 Tony Hoare 在 2009 年道歉,并稱這種錯誤為他的十億美元錯誤。

我將其稱之為自己的十億美元錯誤。它的發明是在1965 年,那時我用一個面向對象語言(ALGOL W)設計了第一個全面的引用類型系統。我的目的是確保所有引用的使用都是絕對安全的,編譯器會自動進行檢查。但是我未能抵御住誘惑,加入了 Null 引用,僅僅是因為實現起來非常容易。它導致了數不清的錯誤、漏洞和系統崩潰,可能在之后 40 年中造成了十億美元的損失。

無論如何,我們必須要面對它。所以,我們到底能做些什么來防止 NullPointerException 異常呢?那么,答案顯然是對其添加 null 檢查。由于 null 檢查還是挺麻煩和痛苦的,很多語言為了處理 null 檢查添加了特殊的語法,即空合并運算符 —— 其在像 Groovy 或 Kotlin 這樣的語言中也被稱為 Elvis 運算符。

不幸的是 Java 沒有提供這樣的語法糖。但幸運的是這在 Java 8 中得到了改善。這篇文章介紹了如何利用像 lambda 表達式這樣的 Java 8 新特性來防止編寫不必要的 null 檢查的幾個技巧。

在 Java 8 中提高 Null 的安全性

假設我們有一個像這樣的類層次結構:

classOuter {

Nested nested;

Nested getNested() {returnnested;

}

}classNested {

Inner inner;

Inner getInner() {returninner;

}

}classInner {

String foo;

String getFoo() {returnfoo;

}

}

解決這種結構的深層嵌套路徑是有點麻煩的。我們必須編寫一堆 null 檢查來確保不會導致一個 NullPointerException:

Outer outer = newOuter();if (outer != null && outer.nested != null && outer.nested.inner != null) {

System.out.println(outer.nested.inner.foo);

}

我們可以通過利用 Java 8 的 Optional 類型來擺脫所有這些 null 檢查。map 方法接收一個 Function 類型的 lambda 表達式,并自動將每個 function 的結果包裝成一個 Optional 對象。這使我們能夠在一行中進行多個 map 操作。Null 檢查是在底層自動處理的。

Optional.of(newOuter())

.map(Outer::getNested)

.map(Nested::getInner)

.map(Inner::getFoo)

.ifPresent(System.out::println);

還有一種實現相同作用的方式就是通過利用一個 supplier 函數來解決嵌套路徑的問題:

Outer obj = newOuter();

resolve(()->obj.getNested().getInner().getFoo());

.ifPresent(System.out::println);

調用 obj.getNested().getInner().getFoo()) 可能會拋出一個 NullPointerException 異常。在這種情況下,該異常將會被捕獲,而該方法會返回 Optional.empty()。

public static Optional resolve(Supplierresolver) {try{

T result=resolver.get();returnOptional.ofNullable(result);

}catch(NullPointerException e) {returnOptional.empty();

}

}

請記住,這兩個解決方案可能沒有傳統 null 檢查那么高的性能。不過在大多數情況下不會有太大問題。

轉載:www.oschina.net/translate/avoid-null-checks-in-java

總結

以上是生活随笔為你收集整理的java8避免null_在 Java 8 中避免 Null 检查的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲精品国产精品国自 | 大陆农村乡下av | 国产精品第100页 | 精品国产av色一区二区深夜久久 | 天堂网站 | 午夜aaa片一区二区专区 | 欧美xxxxbbb| 女女高潮h冰块play失禁百合 | av激情在线观看 | 日本最新中文字幕 | a一级黄色片 | 国产不卡一 | 日韩一区免费观看 | 精品日韩一区 | 日韩激情小说 | 西西人体高清44rt·net | 国产老熟女伦老熟妇露脸 | 日韩精品999 | 68日本xxxxxⅹxxx59 | 熟妇高潮一区二区高潮 | 波多野结衣乳巨码无在线 | 国产深夜福利在线 | 人妻少妇偷人精品无码 | 99精品人妻少妇一区二区 | 亚洲一区二区三区四区视频 | 麻豆最新 | 插骚| 一区高清| 久久久久久色 | 亚洲涩色 | xxxxwwww在线观看 | 1024亚洲| 女同久久另类69精品国产 | 艳妇臀荡乳欲伦交换在线播放 | 久草视频在线播放 | 久久久久久久久综合 | 欧洲色网| 亚洲影视一区二区 | 四虎精品影视 | 涩五月婷婷 | 亚洲天堂毛片 | 中文字幕女同女同女同 | 成人欧美一区二区三区黑人动态图 | 国产综合图片 | av啊啊 | 西比尔在线观看完整视频高清 | 白嫩情侣偷拍呻吟刺激 | 亚洲永久免费av | 黄色高清视频在线观看 | 影音先锋蜜桃 | 黄色电影在线视频 | 九九久久精品视频 | 日韩精品视频一区二区在线观看 | 色香色香欲天天天影视综合网 | 一二级毛片| 亚洲av无码一区二区三区网站 | 成人在线亚洲 | 精品国产乱码久久久久久蜜臀网站 | 四虎影视免费永久大全 | 91嫩草视频在线观看 | 国产最新精品 | 国产精品亲子伦对白 | 国产人人插 | 另类欧美亚洲 | 欧美wwwwww | 免费看黄色一级视频 | 天天干精品| 夜色在线影院 | 欧美大肥婆大肥bbbbb | ass亚洲尤物裸体pics | 婷婷在线综合 | 国产欧美日韩一区二区三区 | 在线观看wwww | 国产精品腿扒开做爽爽爽挤奶网站 | 不卡视频在线观看 | 欧美hdxxxx| 夜夜嗨老熟女av一区二区三区 | 精品人妻一区二区乱码 | 日本学生初尝黑人巨免费视频 | 亚洲天堂一区二区 | 精品国产一区二区三区四 | 亚洲第一成年人网站 | 成人免费版欧美州 | 久久久免费观看视频 | 动漫美女靠逼 | 欧美 日韩 中文字幕 | 天天操天天干天天干 | 91欧美日韩| 中国黄色1级片 | 久久性精品| 国产视频久久久久久 | 看片地址 | 亚洲蜜桃av | 亚洲无码国产精品 | 国产亚洲精品美女久久久久 | 午夜一区在线观看 | 91老肥熟| av青青草 | 欧美精品18videosex性欧美 |