局部变量可能是最终的

时间:2015-07-29 14:28:30

标签: 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 : cookies) {
  }
}

//Local variable 'qry' could be declared final
StringBuffer qry = new StringBuffer("from User u where u.account=? ");

这是否意味着我应该使用final之类的

 final Cookie[] cookies = request.getCookies();

3 个答案:

答案 0 :(得分:1)

建议您在此示例中更改cookies(在第一次调用getCookies()之后),应将其声明为final

我会听警告。如果这是你想要的,final提供了额外的保护,防止程序(或你)试图写入cookie,如果你不应该。

答案 1 :(得分:0)

首先您应该了解最终的优势。如果我们将任何变量声明为最终变量,那么我们就不能一次又一次地重新初始化它。我想,在你的代码中,这些变量是初始化一次并使用很多次。这就是为什么工具建议将该变量声明为最终变量的原因。

最终变量 ---初始化一次并多次使用。

答案 2 :(得分:0)

你是对的。

这是一个很好的做法,声明变量,在程序执行期间{* 1}}不会更改其值。这将帮助您在编译时检测变量上的无效操作(更改值),并防止一些令人讨厌的错误进入您的代码库。 这就是为什么许多代码样式工具在代码中突出显示这些变量并建议将它们声明为final