为什么私人方法也不能是最终的?

Mig*_*ork 43 java oop methods final

添加privatefinal使用相同的方法是多余的吗?

class SomeClass {

    //--snip--

    private final void doStuff()
    {
        // private work here
    }
}
Run Code Online (Sandbox Code Playgroud)

如果是的话private,任何人都无法覆盖它,对吗?

final如果没有效果,为什么可以添加关键字?(或者我错过了什么?)

ysh*_*vit 53

基本上,它是允许的,因为他们觉得不值得提出一个禁止private修饰符的特殊情况.就像你可以在接口上声明方法一样public,或者在接口中声明嵌套类static,即使这些关键字隐含在接口中也是如此.您还可以finalfinal类等上声明方法.

当你添加冗余修饰符时,Java采取了不抱怨的立场.他们一贯地做到了.

  • "冗余修饰符"澄清了很多......谢谢 (12认同)

jac*_*646 5

需要私有方法为final的一个边缘情况是使用SafeVarargs注释时.以下代码无法编译,因为私有方法不是最终的.

@SafeVarargs
private void method(List<String>... stringLists) {
    //TODO a safe varargs operation
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:此代码从Java 9开始编译. (2认同)