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