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

时间:2014-09-25 15:50:23

标签: java static main final

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

虽然这在java中是允许的

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



}

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

1 个答案:

答案 0 :(得分: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
    }
}

final添加到A.main可防止意外隐藏A.main。换句话说,将final添加到A.main可确保不允许B.main,因此C.main会打印"A",而不是"B" }。

  

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

除了上述极端情况之外,将final添加到静态方法并没有太大区别,所以我没有看到添加禁止它的规则的重点。

此处提供了更多信息:Behaviour of final static method