假設(shè)我們有一個(gè)像這樣的類層次結(jié)構(gòu):
解決這種結(jié)構(gòu)的深層嵌套路徑是有點(diǎn)麻煩的。我們必須編寫一堆 null 檢查來(lái)確保不會(huì)導(dǎo)致一個(gè) NullPointerException:
我們可以通過(guò)利用 Java 8 的 Optional 類型來(lái)擺脫所有這些 null 檢查。map 方法接收一個(gè) Function 類型的 lambda 表達(dá)式,并自動(dòng)將每個(gè) function 的結(jié)果包裝成一個(gè) Optional 對(duì)象。這使我們能夠在一行中進(jìn)行多個(gè) map 操作。Null 檢查是在底層自動(dòng)處理的。
還有一種實(shí)現(xiàn)相同作用的方式就是通過(guò)利用一個(gè) supplier 函數(shù)來(lái)解決嵌套路徑的問(wèn)題: