是否有任何性能原因在Java中声明方法参数final?
如:
public void foo(int bar) { ... }
与:
public void foo(final int bar) { ... }
假设bar
只读取并且从未修改过foo()
.
final关键字不会出现在本地变量和参数的类文件中,因此不会影响运行时性能.它的唯一用途是澄清编码人员意图变量不被改变(许多人认为它的使用可疑的原因),以及处理匿名内部类.
关于方法本身的最终修饰符是否具有任何性能增益存在很多争论,因为无论修饰符如何,方法都将在运行时由优化编译器内联.在这种情况下,它也应该仅用于限制方法的覆盖.
最终参数的唯一好处是它可以在匿名嵌套类中使用.如果一个参数永远不会改变,即使没有最终修饰符,编译器也会检测到它是正常操作的一部分.很少有错误是由意外分配的参数引起的 - 如果你的方法足够大,需要这种级别的工程,让它们变小 - 你调用的方法不能改变你的参数.