3

可能重复:
我可以将数组作为参数传递给 Java 中具有可变参数的方法吗?
什么是……在方法签名中

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

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

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

5 回答 5

2

...表示可变参数函数的多参数列表:可以采用可变数量参数的函数。

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

于 2012-08-13T22:54:44.917 回答
2

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

于 2012-08-13T22:57:29.980 回答
1

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

于 2012-08-13T22:55:43.137 回答
0

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

于 2012-08-13T22:57:46.670 回答
0

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

于 2012-08-13T23:16:37.863 回答