2010-01-25 55 views
0

我想知道为什么方法本地的变量不能被声明为final。 有什么具体原因吗?为什么一个方法的局部变量不能被声明为最终的?

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

+0

请引用引用或给出示例代码(和编译器,以及任何编译错误)。 – 2010-01-25 19:24:59

+0

张贴一些示例代码? – 2010-05-18 14:13:19

回答

8

它们可以被声明为最终。你的实际问题在别的地方。

5

Java specification §4.5.4

变量可以被声明最终。最终变量只能分配一次。如果最后一个变量被赋值,除非它在赋值之前立即被赋值(§16),否则会导致编译时错误。

换句话说,这是完全合法的。此外,尽可能使用final和局部变量被认为是best practice

将final与本地变量一起使用(在适当的情况下)也是有用的。 [...]一种合理的方法是只有当方法中至少有一个非最终局部变量时才使用final作为局部变量;这有助于快速区分非最终局部变量和其他局部变量。

+0

对于类/实例,您应该慎重使用final,但对于局部变量(如果不能通过本地/匿名类访问),则更多的是品味imho。 – helpermethod 2010-01-25 19:39:51

1

谁说过我们不能。我们可以宣布。你可能会混淆不能在方法中使用的静态。

0

愚蠢的错误!可能你错过了提到参考变量和日食抱怨,如'最后的令牌上的语法错误',无效的类型'。 例final Pojo = new Pojo();已丢失的引用变量,而它如果final Pojo pojo = new Pojo(); 我相信,当你问的问题,在这里因此,通过那个时候你并没有意识到,愚蠢的错误有完美的作品。

相关问题