Java 局部变量可以是最终变量
我使用该工具检查编码样式,并得到数百条建议: 局部变量“XXX”可以声明为最终变量 以下是我的一些代码:Java 局部变量可以是最终变量,java,final,local-variables,Java,Final,Local Variables,我使用该工具检查编码样式,并得到数百条建议: 局部变量“XXX”可以声明为最终变量 以下是我的一些代码: //Local variable 'cookies' could be declared final Cookie[] cookies = request.getCookies(); //Local variable 'cookie' could be declared final if (cookies != null) { for (Cookie cookie : coo
//Local variable 'cookies' could be declared final
Cookie[] cookies = request.getCookies();
//Local variable 'cookie' could be declared final
if (cookies != null) {
for (Cookie cookie : cookies) {
}
}
//Local variable 'qry' could be declared final
StringBuffer qry = new StringBuffer("from User u where u.account=? ");
这是否意味着我应该使用final
like
final Cookie[] cookies = request.getCookies();
首先,您应该了解Final的优点。如果我们将任何变量声明为最终变量,那么该变量就不能一次又一次地重新初始化。我猜,在您的代码中,这些变量初始化一次并多次使用。这就是工具建议将该变量声明为最终变量的原因
最终变量——初始化一次并多次使用 它建议,因为在本例中(在第一次调用
getCookies()
之后)您没有更改cookies
,所以应该将其声明为final
我会听取警告。如果这是您想要的,final
提供了额外的保护,以防止程序(或您)尝试写入cookies(如果您不应该这样做)。您是对的
声明变量是一种很好的做法,在程序执行期间,变量的值不会被更改为final
。这将帮助您在编译时检测变量上的无效操作(更改值),并防止一些讨厌的bug潜入您的代码库。
这就是为什么许多代码样式工具在代码中突出显示这些变量,并建议将它们声明为
final
您使用的工具是什么?您了解final是什么吗?您可以使用它,因为您正在初始化变量,但您没有在那里初始化,然后必须在构造函数中初始化。(因为您没有进一步改变该值)