2014-02-08 42 views
-1

現在我們有番石榴的Optional和建設者模式。每本書/博客都說避免空值。處理遺留代碼或明確需要它的協議時,我們必須使用它們。但是有沒有其他的用例是有用的,或者它是最好的選擇?何時爲空有用?

+1

值得注意的是,Java 8有自己的['Optional'](http://download.java.net/jdk8/docs/api/java/util/Optional.html)。 –

回答

3

這對未初始化的變量很有用。作爲一個有效值是否有用是另一個依賴於你的編程模型的問題。例如,如果你有一個模型,你的目的是生產很少或沒有垃圾,可選不是一個選項,並且不會產生垃圾。

在極端情況下,您的目標可能是產生1 GB /小時或低至1 GB /天的垃圾。這使您可以運行一天或一週而無需次要收集。在「正常的」Java編程中,缺乏使用這些包裝中的一個可能是懶惰造成的。這是更多的努力,因爲沒有什麼可感知的收益(因爲我從來沒有打算將NPE寫入我的代碼中)。有什麼是有用的工具,比如您的IDE爲您填充此代碼。例如IntelliJ會告訴你,如果你有一個價值可能是null和cn介紹運行時檢查。

+2

我喜歡_'Optional'不是一個選項_。附: Java 8的'Optional'產生的垃圾更少。 –