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

时间:2010-01-25 19:00:55

标签: java scope final local-variables

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

这是否意味着Java中没有本地常量?

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:5)

来自Java specification §4.5.4

  

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

换句话说,它完全合法。此外,尽可能将final与局部变量一起使用best practice

  

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

答案 2 :(得分:1)

谁说我们做不到。我们可以申报。您可能与静态混淆,后者无法在方法中使用。

答案 3 :(得分:0)

愚蠢的错误!可能你错过了提及引用变量和eclipse抱怨像'令牌上的语法错误'最终“,无效的类型'。 示例final Pojo = new Pojo();,如果final Pojo pojo = new Pojo();完全有效,则缺少参考变量 我相信当你在SO问这个问题时,那时候你并没有意识到那个愚蠢的错误。