2015-12-14 46 views
1

final領域促進不變性。這是一件好事,海事組織。但是,我發現必須明確聲明每個方法參數和局部變量爲最終的,看起來很嘈雜並且使得LOC更寬;我只是期望它是這種情況。爲什麼默認情況下Java方法/構造函數參數不是最終的?

我會認爲方法參數和局部變量默認爲final將是上級決定。爲什麼不是這種情況?

+4

這裏不是真正的問題。 – pvg

+0

這裏是不是提出任何修改或討論下一個版本的Java的地方。請將這些問題/討論引導至Oracle。 – Emz

+2

您可以舉一些例子,「根據我的經驗,優秀的Java開發人員更喜歡最終參數。」? – steffen

回答

4

下面是一個正式的答案:最終默認情況下對於兩個領域和參數來說都是更好的選擇,但那艘船在1995年航行,在馬逃脫後試圖鎖上穀倉門的價值相對較小。正如@PeterLawrey所指出的那樣,儘管它很好地避免了變異參數,但它很少值得使它們成爲最終的語法開銷(事實上,在Java 8中,編譯器在某些以前需要顯式最終結果的情況下推斷最終結果,例如內部捕獲類)。

-3

Intellij允許您自定義代碼生成。在首選項 - >編輯器 - >代碼樣式 - > Java - >代碼生成下。您可以點擊make generated parameters final的按鈕。

+1

問題針對的是參數,而不是局部變量。 – Emz

+0

已更新。它旁邊是選項。真的不需要downvote。苛刻的人羣。試圖回答有簡單答案的部分問題。 –

+0

我無法回答倒票。我沒有。我以前一直都在ping用戶。正如你更新它反映,我從來沒有。現在我可以猜出爲什麼反對票了:它沒有回答這個問題。「*作爲最後的,但是,看起來很嘈雜,並使簽名更長*」 – Emz

相關問題