java中的多个main()方法

guy*_*214 12 java methods program-entry-point

我想知道创建额外的主要方法会对您的代码产生什么影响.

例如,

public class TestClass {
    public static void main (String[] args){
        TestClass foo = new TestClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

程序最初启动后,将创建foo,并在其中包含另一个公共main方法.这会导致任何错误吗?

Zac*_*h L 35

它不会导致错误.仅仅因为初始化一个对象,并不意味着主方法被执行.Java最初只会调用传递给它的类的main方法,比如

>java TestClass

但是,做一些事情:

public class TestClass
{
 public static void main (String[] args)
 {
  TestClass foo = new TestClass();
  foo.main(args);
 }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class TestClass
{
 public TestClass()
 {
   //This gets executed when you create an instance of TestClass
   main(null);
 }

 public static void main (String[] args)
 {
  TestClass foo = new TestClass();
 }
}
Run Code Online (Sandbox Code Playgroud)

会导致a StackOverflowError,因为你明确地调用了TestClass的main方法,然后再次调用main方法,再一次,再次调用....

如有疑问,请测试一下:-)


Mic*_*rry 10

main方法是static,这意味着它属于类而不是对象.所以对象根本就没有其他主要方法.

你可以在对象的实例上调用main方法,但是如果你这样做,它实际上只是调用TestClass.main()的另一种方式(并且包括我在内的许多人不喜欢在一个实例上调用静态方法)无论如何对象.)

如果你在同一个程序中引用多个主要方法,那么这也不是问题.简单地指定主类,并执行其主要方法来启动程序(在jar文件的情况下,这是清单文件中的main-class属性.)


Mic*_*Sim 7

它不会有额外的main-方法,因为mainstatic.所以每节课一次.

如果main项目中有多个方法,则将指定在启动应用程序时启动哪个方法.


tem*_*def 5

这很好.拥有多种main方法不会造成任何问题.首次启动Java程序时,执行从用户指定的类或.jar文件中调用的某个函数开始main.一旦程序开始运行,所有其他被调用main的函数基本上被忽略或被视为与其他函数一样.