我创建了Android应用程序并在其上运行静态分析工具PMD。而我没有得到的是为什么它会给我警告,并说在可能的情况下尽可能宣告字段是最终的。
final City selectedItem = (City) arg0.getItemAtPosition(arg2);
new RequestSender(aaa).execute(xxx, selectedItem.getId());
它只是启动内部AsyncTask实例。宣布最终为何是好的风格,为什么?为了便于阅读,我创建了一个新对象,但PMD说它应该是最终的。
答案 0 :(得分:1)
这里有两件不同的事情(你说的是静态和最终的)。
关于final,如果你创建一个你不会改变的引用(对象本身可以被修改),最好将它声明为final,这有两个原因:
关于static(对于变量,关键字对于不同类型的结构具有不同的含义),它将使您的cityItems对其封闭类的所有对象都是唯一的。如果所有对象都可以使用相同的值,则无法复制它。再次,不仅要考虑编译器/性能方面,还要考虑信号:如果我看到一个带有“静态”的字段,我知道它在所有对象之间共享 - 我不需要额外的信息或文档。
在您的示例中,该字段可能应该是公共静态(如果它是共享的)或私有(公共或“package protected”字段打破封装)。