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

可能重复:
是否有任何性能原因在Java中声明方法参数final?
为什么在Java中将局部变量和方法参数标记为“final”?

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

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

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

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

我的问题是,将其作为最终结果会导致任何性能改进,或者如果不能获得代码可以带来什么好处?

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

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

这也是在这个问题中讨论的: 可以过度使用最终伤害比做好吗?

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

我更喜欢让田野final因为整个class级如此短暂,是一个严重的限制。 字段也可能存在线程安全问题,而局部变量则没有。

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

所以你最终获得的只是你的代码不容易出错 – 如果你宣布它是最终的,你就不能错误地覆盖它……