我在修改 Minecraft 时第一次看到这个。它有一个指定 (String ... line) 的构造函数,并认为这只是Mojang创建的一些速记。但现在,我在看过去ProcessBuider
,又看到了。我想知道这是做什么用的。我最好的猜测是,它允许开发人员根据需要添加任意数量的此类对象。但如果是这样的话,为什么不直接使用数组或列表呢?
所以,真的,我要问两个问题:
- 什么是“...”运算符,以及
- 为什么它比使用数组或列表更有用?
...
表示可变参数函数的多参数列表:可以采用可变数量参数的函数。
有关此示例,请查看PrintStream.format
. 第一个(必需)参数是 format String
,其余 0 个或多个参数满足该格式。
它被称为varargs
,正如您所说,它用于能够使用任意数量的指定类型的参数调用方法。它是在 Java 5 中引入的。
您可以在Java tutorials - Varargs
.
这相当于一个String[] line
. 它相当于 Java 中的 C/C++ 中的 varargs 关键字。与 C/C++ 类似,它必须作为最后一个参数出现。
您已经自己回答了问题 #1。至于为什么它更有用,它只是一种需要更少打字的速记。
要回答您的第二个问题,可变参数的一个优点是您可以调用一个采用可变参数参数的函数,而无需传递该参数。相反,如果您的函数接受一个数组,并且您需要在没有任何值的情况下调用它,则调用者需要显式传递 null。