更新時(shí)間:2020-04-14 14:14:45 來源:動(dòng)力節(jié)點(diǎn) 瀏覽2248次
在上篇文章Java8新特性指導(dǎo)手冊(cè)中簡(jiǎn)單的提了一下如何通過Optional類來對(duì)對(duì)象做空校驗(yàn)。接下來,我們?cè)偌?xì)說一下:
業(yè)務(wù)中,假設(shè)我們需要獲取Outer對(duì)象對(duì)底層的Inner中的foo屬性,我們必須寫一堆的非空校驗(yàn),來防止發(fā)生NullPointerException:
通過Optional
在Java8中,我們有更優(yōu)雅的解決方式,那就是使用Optional是說,我們可以在一行代碼中,進(jìn)行流水式的map操作。而map方法內(nèi)部會(huì)自動(dòng)進(jìn)行空校驗(yàn):
通過suppiler函數(shù)自定義方法
上面這種方式個(gè)人感覺還是有點(diǎn)啰嗦,我們可以利用suppiler函數(shù)來出一個(gè)終極解決方案:
利用上面的resolve方法來重構(gòu)上述的非空校驗(yàn)代碼段:
最后
你需要知道的是,上面這兩個(gè)解決方案并沒傳統(tǒng)的null檢查性能那么高效。但在絕大部分業(yè)務(wù)場(chǎng)景下,舍棄那么一丟丟的性能來方便編碼,是完全可取,除非是那種對(duì)性能有嚴(yán)格要求的,我們才不建議使用。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java空指針異常避免”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)