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