在過去的幾年中,我一直使用Java 8 進(jìn)行了很多的編碼工作,用于開發(fā) 新應(yīng)用 和遷移遺留應(yīng)用 ,我覺得是時候?qū)懸恍┯杏玫?rdquo;最佳實踐”。我個人不喜歡”最佳實踐”這個術(shù)語,因為它意味著“一刀切”的解決方案,當(dāng)然編碼工作是不會這樣的–這是因為我們開發(fā)人員會想出適合我們的方案。但我發(fā)現(xiàn)我對Java8特別的喜歡,它讓我的生活更輕松一點,所以我想就此話題展開討論。
Optional
Optional
是一個被嚴(yán)重低估的功能, 它消除了很多困擾著我們的 NullPointerExceptions。它在代碼邊界(包括你調(diào)用和提供 API)處理上特別有用,因為它允許你和你調(diào)用的代碼說明程序運行的期望結(jié)果。
然而,如果沒有必要的思考和設(shè)計,那么就會導(dǎo)致一個小變化而影響大量的類,也會導(dǎo)致可讀性變差。這里有一些關(guān)于如何高效使用Optional的提示。
Optional 應(yīng)該只用于返回類型
…不能是參數(shù)和屬性. 閱讀 這個博客 了解怎樣使用 Optional。 幸運的是, IntelliJ IDEA 在打開 inspection 功能的情況下會檢查你是否遵循了這些建議。

你不應(yīng)該簡單的調(diào)用 get()
Optinal的目的是為了表示此值有可能為空,且讓你有能力來應(yīng)付這種情況。因此,在使用值之前進(jìn)行檢查是非常重要的。在某些情況下簡單的調(diào)用get()而沒有先使用isPresent()進(jìn)行檢查是一樣會導(dǎo)致空指針問題。幸運的是,IntelliJ IDEA 任然會檢查出這個問題并警告你。
