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属性.)
这很好.拥有多种main方法不会造成任何问题.首次启动Java程序时,执行从用户指定的类或.jar文件中调用的某个函数开始main.一旦程序开始运行,所有其他被调用main的函数基本上被忽略或被视为与其他函数一样.
| 归档时间: |
|
| 查看次数: |
60478 次 |
| 最近记录: |