使私人方法最终有用吗?这会改善表现吗?
我认为“私人决赛”没有多大意义,因为私有方法无法被覆盖。所以方法查找应该像使用final时一样高效。
将私有辅助方法设为静态(如果可能)会更好吗?
什么是最好用的?
private Result doSomething()
private final Result doSomething()
private static Result doSomething()
private static final Result doSomething()
答案 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,我们无法覆盖该方法。由于私有方法无法在课堂外访问。没有任何方法可以使方法成为最终的和私有的。它可能会达到性能。