final
領域促進不變性。這是一件好事,海事組織。但是,我發現必須明確聲明每個方法參數和局部變量爲最終的,看起來很嘈雜並且使得LOC更寬;我只是期望它是這種情況。爲什麼默認情況下Java方法/構造函數參數不是最終的?
我會認爲方法參數和局部變量默認爲final
將是上級決定。爲什麼不是這種情況?
final
領域促進不變性。這是一件好事,海事組織。但是,我發現必須明確聲明每個方法參數和局部變量爲最終的,看起來很嘈雜並且使得LOC更寬;我只是期望它是這種情況。爲什麼默認情況下Java方法/構造函數參數不是最終的?
我會認爲方法參數和局部變量默認爲final
將是上級決定。爲什麼不是這種情況?
下面是一個正式的答案:最終默認情況下對於兩個領域和參數來說都是更好的選擇,但那艘船在1995年航行,在馬逃脫後試圖鎖上穀倉門的價值相對較小。正如@PeterLawrey所指出的那樣,儘管它很好地避免了變異參數,但它很少值得使它們成爲最終的語法開銷(事實上,在Java 8中,編譯器在某些以前需要顯式最終結果的情況下推斷最終結果,例如內部捕獲類)。
這裏不是真正的問題。 – pvg
這裏是不是提出任何修改或討論下一個版本的Java的地方。請將這些問題/討論引導至Oracle。 – Emz
您可以舉一些例子,「根據我的經驗,優秀的Java開發人員更喜歡最終參數。」? – steffen