簡體   English   中英

為什么默認情況下Java方法/構造函數參數不是final?

[英]Why are Java method / constructor parameters not final by default?

final領域促進了不變性。 IMO,這是一件好事。 但是,我發現必須顯式地將每個方法參數和局部變量聲明為final,看起來很吵,並且使LOC更寬; 我只是希望情況會如此。

我本以為默認情況下方法參數和局部變量是final的決定。 為什么不是這樣?

這是一個官方的答案:默認情況下,對於字段和參數而言,默認情況下最終將是更好的選擇,但該船於1995年航行,在馬逃脫后試圖鎖上谷倉門的價值相對較小。 正如@PeterLawrey所建議的那樣,即使避免參數突變很好,但也很少值得將其定為語法(實際上,在Java 8中,在某些情況下,編譯器會在某些情況下推斷出確定性,這些情況以前需要顯式確定性,例如通過內部捕獲)。類。)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM