为什么Java main()方法接受String args数组?

Cli*_*ote 2 java programming-languages

由于它可能是Java语言中使用最广泛的方法之一,为什么它必须接受一个字符串数组而没有它呢?例如,我总是可以忍受:

public static void main() {}
Run Code Online (Sandbox Code Playgroud)

过度

public static void main(String[] args) {}
Run Code Online (Sandbox Code Playgroud)

是否有更高的目的,只是能够接受命令行参数,特别是因为绝大多数Java程序是GUI驱动的,不需要通过命令行接收args?

Jon*_*eet 12

我同意它可以更灵活.例如,在C#中,所有这些都是可接受的入口点:

static void Main()
static void Main(string[] args)
static int Main()
static int Main(string[] args)
Run Code Online (Sandbox Code Playgroud)

返回的版本int使用返回值作为进程的退出代码.如果您不关心接收任何参数,您可以使用其中一个不带任何参数的版本.启动程序时给出的任何参数都将被忽略.

所以是的,它可能更灵活 - 但它从来没有让我觉得它是Java中的一个重要问题.

  • 好吧,你无论如何都不能给所有4,因为你不能通过返回类型重载.但是如果你提供两个它会导致错误CS0017. (2认同)

Pet*_*ter 9

即使是一个gui驱动的java应用程序也将从一些主要方法开始."更高目的"从未接受过命令行参数.

目的只是接受论点.期.每当你启动任何程序而不仅仅是Java时,你总是需要一些语法来传递参数


dee*_*ets 6

程序总是采用命令行参数.由程序员决定是否用于任何事情.

因此,在没有字符串数组的情况下实现main会导致更复杂的启动逻辑以及可能令人困惑和错误的行为,因为更多的是没有编写单个参数声明的好处(在整个程序中!)

考虑到Java的整体冗长以及对像Eclipse这样的IDE中样板代码的通用模板的支持,我无法看到真正存在问题的地方.