【问题标题】:Java main methods with "..." arrays? [duplicate]带有“...”数组的Java主要方法? [复制]
【发布时间】:2012-05-12 12:37:47
【问题描述】:

可能重复:
What is the ellipsis (…) for in this method signature?
java: how can i create a function that supports any number of parameters?

好吧,我正在尝试找出一些示例,并且我在 main 方法中找到了这种用于参数的数组定义。 这个“...”有什么特别之处,和普通的 String[] args 有什么区别?

谢谢

【问题讨论】:

  • 你可能是指可变参数:stackoverflow.com/questions/4215698/…
  • 查看 post 了解有关省略号在 Java 中如何工作的更多信息。
  • @Adam,到底“你尝试了什么”与关于特定句法含义的问题有什么关系? (我的意思是,我认为这个问题应该作为一个 dup 结束,但“你尝试过什么”似乎完全无关紧要)
  • @KirkWoll 点击链接并阅读以“尝试花几分钟时间了解这些要点:”开头的部分:该网站不仅仅告诉您“自己尝试”;它为提出有效的问题提供了一些非常好的建议。
  • @Adam,我明白你的意思,但在这种情况下,域名特别没有帮助。最好是按照 Jon Skeet 的"Writing the perfect question" 的思路。没有歧义,也没有混淆。但我承认这不是你的问题。 :)

标签: java arrays string variadic-functions ellipsis


【解决方案1】:

这是 Java 5 中用于可变长度参数列表的符号。它大致相当于一个字符串数组,但允许您传递自动组合成一个数组的各个参数。

void mymethod(String... a) {
    for (String s : a) {
        ...
    }
}

mymethod("quick", "brown", "fox");

这只有在你计划从你的程序中调用一个方法时才有意义,所以我不明白为什么要在你的 main() 中使用这种语法。但是,它会起作用。

【讨论】:

    【解决方案2】:

    省略号 (...) 是可变参数。当您想要创建具有任意数量的参数的方法时使用它们。 Oracle 详细解释了可变参数的工作原理here

    【讨论】:

      【解决方案3】:

      这称为可变参数,这意味着可以传递该类型的任意数量的参数 (String)。

      1.它应该在最终位置

      2.会作为数组处理

      【讨论】:

        【解决方案4】:

        ... 用于可变参数。

        例如

        public void myMethod(Object...params) { }

        params 变量是可选的,被视为一个可以为空的对象数组。

        【讨论】:

          猜你喜欢
          • 2013-12-17
          • 1970-01-01
          • 2021-11-30
          • 1970-01-01
          • 2018-02-20
          • 1970-01-01
          • 1970-01-01
          • 2011-11-17
          • 1970-01-01
          相关资源
          最近更新 更多