为什么我们允许在java中使用最终的main方法?

ank*_*kit 8 java static program-entry-point final

任何人都可以告诉我在java中使用main方法作为final.

虽然这在java中是允许的

public static final void main(String[] args) {  



}
Run Code Online (Sandbox Code Playgroud)

我没有看到任何使用它最终的用途.无论如何它是静态的,所以我们不能覆盖它.

aio*_*obe 12

添加final到静态方法实际上可以产生影响.请考虑以下代码:

class A {
    public static void main(String[] args) {
        System.out.println("A");
    }
}

class B extends A {
    public static void main(String[] args) {
        System.out.println("B");
    }
}

class C extends B {
}

public class Test {
    public static void main(String[] args) {
        C.main(args);  // Will invoke B.main
    }
}
Run Code Online (Sandbox Code Playgroud)

添加finalA.main将防止意外隐藏A.main.换句话说,添加final到不允许的A.main保证B.main,C.main因此打印"A"而不是例如"B".

为什么我们允许在java中使用最终的main方法?

除了上面的角落情况之外,添加final静态方法没有太大区别,所以我没有看到添加禁止它的规则的重点.

更多信息:最终静态方法的行为

  • `final`将阻止隐藏`static`方法. (3认同)