使私有方法最终化?

问题描述 投票:0回答:6

将私有方法设置为 final 有好处吗?这会提高性能吗?

我认为“private final”没有多大意义,因为私有方法不能被覆盖。所以方法查找应该像使用 final 时一样高效。

将私有辅助方法设为静态(如果可能)会更好吗?

什么最好用?

  private Result doSomething()
  private final Result doSomething()
  private static Result doSomething()
  private static final Result doSomething()
java final
6个回答
69
投票

final
添加到方法中不会提高 Sun HotSpot 的性能。在可以添加
final
的地方,HotSpot 会注意到该方法永远不会被覆盖,因此对它一视同仁。

在 Java 中

private
方法是非虚拟的。您不能覆盖它们,即使使用子类可以访问它们的嵌套类也是如此。对于实例方法,调用 privates 的指令与用于非 privates 的指令不同。将
final
添加到私有方法中不会有任何困难。

与以往一样,这些微优化不值得花时间。


21
投票

private static Result doSomething()
,如果此方法未使用任何实例变量。 在任何情况下,将它们设为 final 是没有意义的,因为访问器是私有的。


8
投票

没有。它不会。私有方法不被继承。因此,让它们最终化是一个有争议的问题。另请注意,您不应该为了性能而使方法最终化。 JVM 比这更聪明。这种优化用处不大。您应该根据语义和设计将事物设为最终的、私有的、私有的、受保护的、私有的等。


7
投票

将私有方法标记为 final 不会改变任何内容,但它可能会使初级开发人员在查看您的代码时感到困惑。保持简单。


4
投票

IBM Developer 作品:Java 理论与实践:这是您的最终答案吗? 文章是一篇关于在 Java 中使用

final
关键字的老歌:


-1
投票

通过使方法成为最终方法,我们不能覆盖该方法。由于无法在类外访问私有方法。使方法成为最终的和私有的是没有意义的。它可能会影响性能。

© www.soinside.com 2019 - 2024. All rights reserved.