我最近在一些代碼中工作,當被一個同事審查時,被告知我通過刪除手動裝箱的double值而犯了一個錯誤。我沒有想過,但我只是這樣做,因爲IntelliJ建議我改變它,所以我做了。Java手動裝箱VS自動裝箱的原始數字
我被這位同事指向Effective Java(2nd Edition)的第221頁,其中討論了Boxed原語可以爲null,並且依賴於autounboxing可能導致潛在的空指針異常(除其他外)...但在這種情況下,我正在移除手動裝箱並讓編譯器處理它。
但爲什麼要重要?如果我有一個方法需要Double
作爲參數,並且以前傳遞的是new Double(5.0)
,但是將其更改爲5
,那麼可能會產生什麼影響?
它不應該改變任何東西。編譯器將用'Double.valueOf(5)'替換值爲'5'的'Double'參數。一個'Double' *可以爲空,但如果你傳遞一個'double',則不會。 –
是否有理由爲什麼IntelliJ會推薦刪除手動裝箱? – agent154
是否有重載的方法或構造函數可以有不同的行爲? –