2015-12-14 52 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

相关问题