将私有方法设置为 final 有好处吗?这会提高性能吗?
我认为“private final”没有多大意义,因为私有方法不能被覆盖。所以方法查找应该像使用 final 时一样高效。
将私有辅助方法设为静态(如果可能)会更好吗?
什么最好用?
private Result doSomething()
private final Result doSomething()
private static Result doSomething()
private static final Result doSomething()
将
final
添加到方法中不会提高 Sun HotSpot 的性能。在可以添加 final
的地方,HotSpot 会注意到该方法永远不会被覆盖,因此对它一视同仁。
在 Java 中
private
方法是非虚拟的。您不能覆盖它们,即使使用子类可以访问它们的嵌套类也是如此。对于实例方法,调用 privates 的指令与用于非 privates 的指令不同。将 final
添加到私有方法中不会有任何困难。
与以往一样,这些微优化不值得花时间。
private static Result doSomething()
,如果此方法未使用任何实例变量。
在任何情况下,将它们设为 final 是没有意义的,因为访问器是私有的。
没有。它不会。私有方法不被继承。因此,让它们最终化是一个有争议的问题。另请注意,您不应该为了性能而使方法最终化。 JVM 比这更聪明。这种优化用处不大。您应该根据语义和设计将事物设为最终的、私有的、私有的、受保护的、私有的等。
将私有方法标记为 final 不会改变任何内容,但它可能会使初级开发人员在查看您的代码时感到困惑。保持简单。
IBM Developer 作品:Java 理论与实践:这是您的最终答案吗? 文章是一篇关于在 Java 中使用
final
关键字的老歌:
通过使方法成为最终方法,我们不能覆盖该方法。由于无法在类外访问私有方法。使方法成为最终的和私有的是没有意义的。它可能会影响性能。