繁体   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