代码之家  ›  专栏  ›  技术社区  ›  Ali

为什么Java主()方法接受一个字符串ARG数组?

  •  2
  • Ali  · 技术社区  · 16 年前

    既然它可能是Java语言中使用最广泛的方法之一,为什么它必须接受一个字符串数组,没有它就不能工作?例如,我可以一直生活在:

    public static void main() {}
    

    结束

    public static void main(String[] args) {}
    

    这有没有比接受命令行参数更高的目的,特别是因为绝大多数Java程序都是GUI驱动的,不需要通过命令行接收ARG?

    8 回复  |  直到 8 年前
        1
  •  9
  •   unwind    16 年前

    即使是GUI驱动的Java应用程序也会从一些主要方法开始。 “更高的目的”从未接受命令行参数。

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

        2
  •  12
  •   Jon Skeet    16 年前

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

    static void Main()
    static void Main(string[] args)
    static int Main()
    static int Main(string[] args)
    

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

    所以,是的 能够 更灵活——但我从来没有把它当作Java中的一个重要问题。

        3
  •  6
  •   deets    16 年前

    程序 总是 采用命令行参数。由程序员决定它们是否用于任何用途。

    因此,在没有字符串数组的情况下实现main将导致更复杂的启动逻辑和潜在的混乱和错误行为,因为不编写一个更少的参数声明(在整个程序中)会带来更大的争议。

    考虑到Java和伊柯丽斯在IDES中对样板代码的通用模板的支持,我没有看到这是一个真正的问题。

        4
  •  4
  •   boj    16 年前

    “这有更高的目的吗(…)”

    是的:遗产。

        5
  •  2
  •   Mehrdad Afshari    16 年前

    “绝大多数”的项目所做的并不会对需要做的事情产生太大的影响。仍然有许多命令行程序是由命令行参数驱动的。

        6
  •  2
  •   dommer    16 年前

    许多GUI程序提供了接受命令行开关的功能,以控制启动时的行为。

        7
  •  2
  •   Edmund    16 年前

    我猜这是因为许多Java程序至少需要一些参数。像C(Java的语法灵感,如果没有其他的东西),Java认为最好的方法是提供这些参数作为参数。 main .

    即使是图形用户界面程序也常常采用命令行参数。仅仅因为它从中启动的shell通常不要求这些参数(默认情况下),并不意味着它们不受支持。

        8
  •  1
  •   dfa    16 年前

    也有许多Java程序通过命令行接收ARG。想想javac、ant、maven等