Java 中的多个 main() 方法
2022-09-03 16:22:00
我想知道创建额外的main方法会对你的代码产生什么影响。
例如
public class TestClass {
public static void main (String[] args){
TestClass foo = new TestClass();
}
}
程序最初启动后,将创建foo,并且其中将有另一个公共main方法。这会导致任何错误吗?
我想知道创建额外的main方法会对你的代码产生什么影响。
例如
public class TestClass {
public static void main (String[] args){
TestClass foo = new TestClass();
}
}
程序最初启动后,将创建foo,并且其中将有另一个公共main方法。这会导致任何错误吗?
它不会导致任何错误。仅仅因为初始化对象,并不意味着 main 方法被执行。Java最初只会调用传递给它的类的主方法,例如
>java TestClass
但是,执行如下操作:
public class TestClass
{
public static void main (String[] args)
{
TestClass foo = new TestClass();
foo.main(args);
}
}
或
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();
}
}
这将导致 一个 ,因为您正在显式调用 TestClass 的主方法,然后它将一次又一次地调用 main 方法,一次又一次地调用 main 方法,并且....StackOverflowError
当有疑问时,只需测试一下:-)
main 方法是静态的,这意味着它属于类而不是对象。因此,该对象内部根本不会有另一个 main 方法。
你可以在对象的实例上调用 main 方法,但如果你这样做,它实际上只是调用 TestClass.main() 的另一种方式(包括我在内的许多人都不愿意在对象的实例上调用静态方法。
如果您在同一程序中引用多个主要方法,那么这也不是问题。只需指定主类并执行其main方法即可启动程序(在jar文件的情况下,这是清单文件中的main-class属性。