PMD为什么建议将字段设为最终字段?

时间:2013-03-07 08:12:10

标签: java android pmd

我创建了Android应用程序并在其上运行静态分析工具PMD。而我没有得到的是为什么它会给我警告,并说在可能的情况下尽可能宣告字段是最终的。

final City selectedItem = (City) arg0.getItemAtPosition(arg2);
new RequestSender(aaa).execute(xxx, selectedItem.getId());

它只是启动内部AsyncTask实例。宣布最终为何是好的风格,为什么?为了便于阅读,我创建了一个新对象,但PMD说它应该是最终的。

1 个答案:

答案 0 :(得分:1)

这里有两件不同的事情(你说的是静态和最终的)。

关于final,如果你创建一个你不会改变的引用(对象本身可以被修改),最好将它声明为final,这有两个原因:

  • 它有助于编译器能够进行小的性能优化
  • 它可以帮助您(或您的开发人员)了解此参考不会被更改 - 它会发出信号。

关于static(对于变量,关键字对于不同类型的结构具有不同的含义),它将使您的cityItems对其封闭类的所有对象都是唯一的。如果所有对象都可以使用相同的值,则无法复制它。再次,不仅要考虑编译器/性能方面,还要考虑信号:如果我看到一个带有“静态”的字段,我知道它在所有对象之间共享 - 我不需要额外的信息或文档。

在您的示例中,该字段可能应该是公共静态(如果它是共享的)或私有(公共或“package protected”字段打破封装)。

相关问题