在Java中声明私有方法"final"是否有优势?

moh*_*ied 0 java

在Java中将私有方法声明为"final"是否有优势?

如果我的理解是正确的,"最终"修饰符确保我不能覆盖子类中的方法,因此这可以使该方法在运行时更有效.一些文献说,如果它是最终的,可以内联,例如可以使方法调用更快.此外,如果声明为final,则Java运行库不必在继承层次结构中查找其他方法.

但是,私有函数不能被覆盖,所以它们也暗含"最终"吗?以下两个声明之间是否有区别:

private void myFun()
Run Code Online (Sandbox Code Playgroud)

private final void myFun();
Run Code Online (Sandbox Code Playgroud)

Ale*_*hin 5

子类不能private按设计覆盖方法.此外,final关键字告诉编译器,无论其访问级别如何,子类都不能覆盖方法.

由于private已经暗示子类可能不会覆盖方法,因此声明私有方法final是多余的.发表声明不会引起问题,但也不会有任何成就,因为私有自动被认为是最终的.

所有编译器都将private方法视为final.编译器不允许private覆盖任何方法.同样,所有编译器都会阻止子类重写final方法.

更新

在你的问题中,你说的是

"final"修饰符确保我不能覆盖子类中的方法,因此在运行时使此方法更有效

这是一个值得怀疑的陈述.如果声明private方法final,则优化将取决于您使用的编译器及其设置.这意味着没有.不,这未必是真实的,如果你申报你的方法privatefinal,或只是final,它会跑得更快.