【问题标题】:Why do people leave unused `String args[]` in Java? [duplicate]为什么人们在 Java 中留下未使用的`String args[]`? [复制]
【发布时间】:2013-05-03 09:15:20
【问题描述】:

当我看到 Java 程序时,很多人都会留下String args[],即使程序不使用它们。为什么是这样?有什么特别的吗?

【问题讨论】:

标签: java arguments command-line-arguments


【解决方案1】:

String args[] 是 main 方法签名的一部分。如果你没有它,当你尝试运行代码时,你会得到下面的异常。

Exception in thread "main" java.lang.NoSuchMethodError: main

【讨论】:

  • pastebin.com/5KQYZ1VV 这对我来说运行良好,不过...
  • 当我使用 mac 的 java 编译器(版本 javac 1.6.0_45)时出现异常。你用的是什么编译器?
  • OSX 10.7 上的 javac 1.7.0_10
  • 我的电脑上没有那个特定的编译器。当我在 Fedora 上使用 javac 版本 1.7.0_11 进行尝试时。我得到了一个Error: Main method not found in class tut21, please define the main method as: public static void main(String[] args) 所以我不知道你为什么可以运行它。你应该做不到。
  • @MarJamRob,要么你的编译器坏了,要么你没有运行你认为的类文件。 JLS7 明确声明该参数是必需的(参见 KevinB 的回答)。
【解决方案2】:

如果是针对main(String[]),它是为了满足方法签名,因此至关重要。

【讨论】:

    【解决方案3】:

    规范要求。

    方法 main 必须声明为 public、static 和 void。它必须 指定一个声明类型为数组的形式参数(第 8.4.1 节) 细绳。因此,可以接受以下任一声明:

    public static void main(String[] args)

    public static void main(String...args)

    Specification

    【讨论】:

    • +1 用于 JLS7 参考。
    【解决方案4】:

    main 中的代码可能不会直接使用它,但它仍然是必需的。 'String args[]' 是传递任何命令行参数的地方。即使您传递了 0 个参数,也需要有一种方法可以对其进行验证。它也是JVM要求的main所需的签名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 2011-08-23
      • 2018-05-09
      • 2014-06-19
      • 1970-01-01
      相关资源
      最近更新 更多