让私人方法最终?

时间:2009-12-31 08:01:20

标签: java final

使私人方法最终有用吗?这会改善表现吗?

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

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

什么是最好用的?

  private Result doSomething()
  private final Result doSomething()
  private static Result doSomething()
  private static final Result doSomething()

6 个答案:

答案 0 :(得分:66)

向方法添加final不会提高Sun HotSpot的性能。在可以添加final的地方,HotSpot会注意到该方法永远不会被覆盖,因此对其进行处理。

在Java中private方法是非虚拟的。您无法覆盖它们,甚至可以使用嵌套类,它们可以被子类访问。例如,instructoin调用privates的方法与用于非私有的方法不同。将final添加到私有方法没有任何可能性。

与往常一样,这种微观优化不值得花时间。

答案 1 :(得分:21)

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

答案 2 :(得分:8)

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

答案 3 :(得分:7)

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

答案 4 :(得分:4)

IBM开发人员的工作原理:Java theory and practice: Is that your final answer?文章是一个老人,但在Java中使用final关键字是好的:

答案 5 :(得分:0)

通过制作方法final,我们无法覆盖该方法。由于私有方法无法在课堂外访问。没有任何方法可以使方法成为最终的和私有的。它可能会达到性能。