在java中作为final的main方法

Gpa*_*par 6 java program-entry-point

我在其中一个认证考试中看到了这段代码:

public class SimpleClass 
{
    int num;
    final static void main(final String args[])
    {
        String s1="new";
        String s2="String";
        String s3="Creation";
        System.out.println(s1+s2+s3);
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道最后的方法是无法覆盖的方法.我也知道如果方法的通常签名 main 被更改,它将被JVM视为任何其他普通方法,而不是main().

但是,给我的选项是:

1>  Code  won't  compile
2>  Code  will  throw  an  exception
3>  will  print  newStringCreation.
Run Code Online (Sandbox Code Playgroud)

在eclipse IDE上运行此程序是不可能的.任何人都可以解释应该是什么答案,为什么?

好的,让我提出这样的问题 - 当我执行我的程序时,会发生什么?我应该选择以上3个选项中的哪一个?

Era*_*ran 10

final static void main 不会运行,因为主要不公开.

public final static void main 将工作.

至少这是我的Eclipse IDE上的行为.


小智 7

代码将编译没有任何问题,但它会抛出一个运行时异常,说"主要方法不公开".main方法必须是公共的,因为它必须由JVM调用,它不在包的范围内,因此需要访问说明符-public.如果您无法在eclipse中运行它,请尝试使用filename.java将文件保存在记事本中的古老方法.转到cmd并到达文件位置.如果在桌面上,请使用cd桌面!使用以下命令运行文件 -

javac filename.java

java filename
Run Code Online (Sandbox Code Playgroud)

您将看到我上面提到的所需的运行时异常.