局部变量可以是 final

Local variable could be final

我使用工具来检查编码风格,我得到了数百条这样的建议:

Local variable 'XXX' could be declared final

这是我的一些代码:

//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();

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

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

建议因为您在这个例子中没有更改 cookies(在第一次调用 getCookies() 之后,它应该被声明为 final.

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

你是对的。

声明变量是一个好习惯,在程序执行期间它们的值不会改变,如final。这将帮助您在编译时检测变量上的无效操作(更改值),并防止一些讨厌的错误蔓延到您的代码库中。 这就是为什么许多代码样式工具会在代码中突出显示此类变量并建议将它们声明为 final.