【问题标题】:"..." being used in Java? [duplicate]“...”在Java中使用? [复制]
【发布时间】:2012-08-13 22:53:47
【问题描述】:

可能重复:
Can I pass an array as arguments to a method with variable arguments in Java?
What is … in a method signature

我在修改 Minecraft 时第一次看到这个。它有一个指定(String ... line)的构造函数,并认为它只是Mojang 创建的一些速记。但现在,我在查看ProcessBuider,看到了again。我想知道这是做什么用的。我最好的猜测是,它允许开发人员根据需要添加任意数量的此类对象。但如果是这样,为什么不直接使用 Array 或 List 呢?

所以,真的,我要问两个问题:

  1. 什么是“...”运算符,以及
  2. 为什么它比使用数组或列表更有用?

【问题讨论】:

  • 它被称为可变参数。这里有更多信息:stackoverflow.com/questions/766559/…
  • 它被称为“可变参数”。在那里,您刚刚获得了一个新的搜索关键字 :)
  • 对不起,可能是骗子,我不知道它叫什么。
  • 点赞?这真的是一个有趣的问题还是一个新概念?

标签: java constructor operators


【解决方案1】:

... 表示可变参数函数的多参数列表:可以接受可变数量参数的函数。

例如,请查看PrintStream.format。第一个(必需)参数是格式 String,其余 0 个或多个参数满足该格式。

【讨论】:

  • 不错的答案!很详细,简洁,并举了一个例子。 +1
【解决方案2】:

它被称为varargs,正如你所说的,它用于能够使用任意数量的指定类型的参数调用方法。它是在 Java 5 中引入的。
你可以在Java tutorials - Varargs阅读更多内容。

【讨论】:

  • 这真的很有用!也感谢您的链接。
【解决方案3】:

这相当于String[] line。它相当于 Java 中的 C/C++ 中的 varargs 关键字。与 C/C++ 类似,它必须作为最后一个参数出现。

【讨论】:

  • 我不知道 :) 谢谢!
【解决方案4】:

您已经自己回答了问题 #1。至于为什么它更有用,它只是一种不需要打字的速记。

【讨论】:

  • 我不会说这是短手。我会说它很有说服力,因为它允许您传递 0/1 或更多参数而无需提供多个方法签名
【解决方案5】:

要回答您的第二个问题,可变参数的一个优点是您可以在不传递该参数的情况下调用采用可变参数参数的函数。相反,如果您的函数接受一个数组,并且您需要在没有任何值的情况下调用它,则调用者需要显式传递 null。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2012-11-19
    • 2011-01-11
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    相关资源
    最近更新 更多