【发布时间】:2011-01-13 04:30:57
【问题描述】:
我对 Java main 声明的语法有疑问:
public static void main (String[] args)
既然你可以在调用主函数时传递可变数量的字符串,这不应该是一个可变长度的参数列表而不是一个数组吗?为什么使用字符串参数列表对该方法的命令行调用甚至可以工作? (除非有幕后处理使用字符串列表构建一个数组,然后将该数组传递给 main 方法......?) main 声明不应该更像这样......? -
public static void main(String... args)
【问题讨论】:
-
我猜这是一个向后兼容性问题...
-
我真的不认为你应该自己调用主函数......它应该从VM调用。
-
我自己不调用主函数。我不认为这是可能的。我想这确实是一个关于 Java 内部工作原理的问题......
-
很多人都在说“你永远不会从代码中调用 main”。这不是真的,只是很少见。通常我会看到在插件/运行时加载场景中从代码调用 main,类似于 jUnit 在运行时加载新代码的方式。 (仅供参考,我在这里做了一个很大的假设,即 jUnit 像 NUnit 一样工作。Java 听起来很酷,但我只使用过 C# :)
-
谢谢大家的回答和cmets!自从我第一次了解可变长度参数列表以来,这个问题一直困扰着我,感谢大家帮助我理解它。
标签: java main variadic-functions