java:为什么Local变量应该声明为final

时间:2012-02-08 14:57:45

标签: java final pmd

  

可能重复:
  Is there any performance reason to declare method parameters final in Java?
  Why would one mark local variables and method parameters as “final” in Java?

我正在使用PMD查看代码违规行为。

在webService方法中,我有以下代码

public ServiceRequest getData()
{
Status status = new Status();
// code
}

PMD建议我的是,这个局部变量状态可以被声明为最终状态。

我的问题是,将其设为最终会导致任何性能提升,或者如果不能获得代码可以获得哪些好处?

3 个答案:

答案 0 :(得分:4)

取自以下文章:http://www.javapractices.com/topic/TopicAction.do?Id=23

  • 明确传达您的意图
  • 允许编译器和虚拟机执行次要优化
  • 清楚地标出了行为更简单的项目 - 最终说,“如果你正在寻找复杂性,你将不会在这里找到它。”

这个问题也讨论了这个问题:Can excessive use of final hurt more than do good?

答案 1 :(得分:4)

final表示不会更改局部变量。我的感觉是方法应该很短,你应该能够轻松地理解它们,因此使变量最终可能有点多余。

我更喜欢制作字段final,因为整个课程都很短,这是一个严重的限制。字段也可能存在线程安全问题,而局部变量则没有。

答案 2 :(得分:1)

我不知道通过使状态最终来获得性能优势,但是PMD建议你这样做,因为在第一次初始化之后你可能永远不会写状态。

所以你最终得到的只是你的代码不容易出错 - 如果你宣告它是最终的,你就不能错误地覆盖它......