在java中作为final的main方法

时间:2014-11-03 09:06:25

标签: java main

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

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);
    }
}

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

但是,给我的选项是:

1>  Code  won't  compile
2>  Code  will  throw  an  exception
3>  will  print  newStringCreation.

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

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

4 个答案:

答案 0 :(得分:10)

final static void main不会运行,因为main不公开。

public final static void main将有效。

至少是Eclipse IDE上的行为。

答案 1 :(得分:7)

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

javac filename.java

java filename

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

答案 2 :(得分:4)

必须可以从外部访问main方法。因此,在您的情况下,应用程序将编译但在运行时抛出执行。

答案 3 :(得分:-1)

你有main方法,但由于修饰符是最终的,JVM将无法运行程序的main方法。你不会看到任何编译错误。

当您将修改器最终更改为公开

时,您可以在eclipse中运行该程序