有人问了我一个问题。我认为主方法需要接受命令行参数作为方法参数。
除此之外,还有其他关于 public static void main(String args[])
方法的论据吗?
有人问了我一个问题。我认为主方法需要接受命令行参数作为方法参数。
除此之外,还有其他关于 public static void main(String args[])
方法的论据吗?
考虑到"main"类的类型初始化会阻塞直到应用程序结束是令人憎恶的。
我们能应对吗?我敢说可以。但我认为我最终总会写出:
public class EntryPoint
{
static
{
// Workaround for entry points being static initializers
String[] arguments = getArgumentsHoweverThatHappens();
RealEntryPoint.execute(arguments);
}
}
... 而且没有其他东西会影响 EntryPoint
。
静态初始化程序和主方法有不同的意图。主方法的目的是仅在JVM以包含类作为主类调用时(或直接由代码调用)被调用。静态初始化程序的目的是执行类初始化。初始化程序总是会运行,但可能存在未运行的主方法。
除了以上所述,需要main
(而不是静态块的特性)的原因是您的应用程序需要一个起点。也就是说,当您执行应用程序时,会向JVM传递数十个类,JVM需要知道首先调用哪种方法才能启动和执行您的应用程序。您需要声明应用程序的起始点,因为JVM无法猜测它。(对我的英语不好抱歉)
静态块是在相应的类被加载时运行一次。然而,main()
是程序的入口点,正如Jon所说,它可以被多次调用。
main()
方法有什么特别之处? - Nishan