任何人都可以告诉我在java中使用main方法作为final。
虽然这在java中是允许的
public static final void main(String[] args) {
}
我没有看到任何使用它最终的用途。无论如何它是静态的,所以我们不能覆盖它。
答案 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