如果main方法在java文件的"非公开类"里面怎么办?

Aha*_*med 9 java program-entry-point public

我有一个包含多个类的java文件,其中一个是公共的.如果main方法在非公共类中.我无法运行该java文件.这是为什么?并且没有编译错误.如果是这样,我该如何使用该主要方法?

cha*_*_ma 24

实际上,您可以在非公共类中执行main方法.如果你把这个课

class A {
  public static void main(String... args) {
      System.out.println("This is not a public class!");
  }
}
Run Code Online (Sandbox Code Playgroud)

在名为NonPubClass.java的文件中.您可以使用javac命令编译此文件,但是您不会获得NonPubClass.class,而是获得A.class.使用java a调用该类,您将看到打印的字符串---这不是公共类!

  • +1.为什么其他人都说你不能运行非公开课的主要方法?也许较旧的JVM确实检查了入门级的公共标志?我的JVM(HotSpot 1.7)似乎并不关心. (5认同)

Gal*_*xin -2

您当然可以重写 main 方法,并且它不会违反任何编译器规则,因此您不会出现任何编译器错误。

尽管您有多个类,但您还是检查了声明为公共的文件是否是您尝试执行的文件的名称。

这是一个约定,文件应该以该代码中公共的同一类命名

因此,当您尝试执行该类时,它没有开始执行的 main 方法。因此,如果您想在非公共类中执行 main 方法,唯一的方法是从该类的 main 方法中调用该 main 方法。公开课。

  • 您不能覆盖静态方法。 (7认同)
  • 答案似乎不正确。首先,正如 Lew Bloch 所指出的,您不能重写静态方法,其次,您实际上可以在非公共类中启动 main 方法,而无需按照此处的建议通过公共类。您必须将包含“main”方法的非公共类的名称作为参数传递给“java”命令。 (5认同)