为什么方法的局部变量不能声明为final?

gir*_*iri 0 java scope final local-variables

我想知道为什么方法本地的变量不能被声明为final.有什么具体原因吗?

这是否意味着Java中没有局部常量?

Bal*_*usC 8

他们可以被宣布为最终.你的实际问题在于其他地方.


jas*_*son 5

Java规范§4.5.4开始:

变量可以声明为final.最终变量只能分配一次.如果分配了最终变量,则编译时错误,除非在分配之前明确未分配(第16段).

换句话说,它是完全合法的.此外,尽可能使用局部变量被认为是最佳实践final.

始终使用带有局部变量的final(在适当的时候)也很有用.[...]一种合理的方法是只有在方法中至少有一个非最终局部变量时才对局部变量使用final; 这有助于快速区分非最终局部变量与其他变量.