【问题标题】:Local variable could be final [duplicate]局部变量可能是最终的[重复]
【发布时间】:2015-07-29 22:48:15
【问题描述】:

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

局部变量“XXX”可以声明为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 like

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

【问题讨论】:

  • 你用的是什么工具?
  • 你明白什么是final吗?你可以使用它,因为你正在初始化变量,你没有在那里初始化,那么你必须在构造函数中。 (因为您不会进一步改变值)

标签: java final local-variables


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你是对的。

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

      【讨论】:

        猜你喜欢
        • 2013-08-16
        • 2019-08-19
        • 1970-01-01
        • 1970-01-01
        • 2015-08-12
        • 2018-09-15
        • 1970-01-01
        • 2017-11-01
        • 1970-01-01
        相关资源
        最近更新 更多