2013-05-15 92 views
1

鑑於這種代碼可以新的Double(String)返回null嗎?

final Double price = new Double(someString); 
if(price != null <...>) { 

上午我在假設價格永遠不能爲null這裏正確嗎?

+5

是的,它永遠不會爲空。 –

+0

如果您將聲明與作業分開,並試着抓住作業,那麼如果'someString'不是數字(取決於您對異常所做的操作),價格可能爲空 – blank

回答

4

閱讀規格:section 15.9.4 of the JLS

一個類的實例創建表達式的值是將指定的類的新創建的對象的引用。每次評估表達式時,都會創建一個新對象。

因此構造函數不能返回null。但是,可能會出現java.lang.OutOfMemoryError

1

new永遠不會導致null,是的。

6

它可以拋出NumberFormatException但它永遠不可能是null,因爲您正在使用new關鍵字。

+3

我喜歡你的答案並向上投票,但給了引用實際規格的那個優勢。 –

1

是的,它永遠不能爲空。你爲什麼懷疑?

+0

我懷疑是因爲代碼明確地檢查過它,我找不到規範中明確指出的那部分,這是無用的檢查。 –

相關問題