为什么局部变量是最终的?

App*_*art 0 java

为什么局部变量最后是方法参数还是内部方法.

private void add(final int a , final int b) {
    final int c = 0;
}
Run Code Online (Sandbox Code Playgroud)

请任何人澄清.我正在搜索很多,但我没有找到确切的答案.

Bri*_*new 6

一个原因是它可以防止你无意中改变它们.这是一个很好的做法,因为它会捕获一些难以置信的编码错误.

第二个原因是,如果您正在使用内部类,则需要将从外部作用域引用的变量声明为final.有关详细信息,请参阅此SO答案.

问题final在于它在不同的环境中意味着不同的东西.有关详细信息,请参阅此讨论.

  • 恕我直言,它也降低了可读性.不确定为每个参数和局部变量做这件事是否明智. (4认同)