main()方法可以指定为private还是protected?

bil*_*llu 5 java

main()方法可以指定为私有还是受保护?

它会编译吗?

它会运行吗?

Osc*_*Ryz 18

方法main()可以指定为private还是protected?

它会编译吗?

它会运行吗?

是的,但它不能作为您的申请的切入点.如果从其他地方调用它,它将运行.

试试看:

$cat PrivateMain.java  
package test;
public class PrivateMain {
    protected  static void main( String [] args ) {
        System.out.println( "Hello, I'm proctected and I'm running");
    }
}
class PublicMain {
    public static void main( String [] args ) {
        PrivateMain.main( args );
    }
}
$javac -d . PrivateMain.java  
$java test.PrivateMain
Main method not public.
$java test.PublicMain
Hello, I'm proctected and I'm running
Run Code Online (Sandbox Code Playgroud)

在此代码中,受保护的方法不能用作应用程序的入口点,但是,它可以从类中调用 PublicMain

不能调用私有方法,而是从类本身调用.所以你需要这样的东西:

 public static void callMain() {
      main( new String[]{} );
 }
Run Code Online (Sandbox Code Playgroud)

要打电话,main如果它是私人的.

  • @Michael--唯一被`java`识别为入口点的方法签名是`static void main(String [])`.除了`main`,任何参数类型或非`void`返回类型之外的任何其他名称的方法都不会被识别,从来没有被识别过. (2认同)

Kar*_*hik 5

是的,它会编译.但它不会成为该计划的切入点.

Java查找公共主方法签名.如果任何修饰符不同,那么它将假设它作为其他方法.

运行并测试4你自己.:)


Chr*_*ett 0

它将编译,但不会运行(使用 Eclipse 测试)。