可能重复:
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。我想知道这是用来做什么的。我最好的猜测是,它允许开发人员根据需要添加任意数量的对象。但如果是这种情况,为什么不使用数组或列表呢?
所以,真的,我问了两个问题:
答案 0 :(得分:2)
...
表示可变参数函数的多参数列表:一个可以获取可变数量参数的函数。
有关此示例,请查看PrintStream.format
。第一个(必需)参数是格式String
,其余0个或多个参数符合该格式。
答案 1 :(得分:2)
它被称为varargs
,正如您所说,它用于能够使用指定类型的任意数量的参数调用方法。它是在Java 5中引入的
您可以在Java tutorials - Varargs
中阅读更多内容。
答案 2 :(得分:1)
这相当于String[] line
。它与Java相当于C / C ++中的varargs关键字。与C / C ++类似,它必须作为最后一个参数出现。
答案 3 :(得分:0)
你自己已经回答了问题#1。至于为什么它更有用,它只是一种需要较少打字的速记。
答案 4 :(得分:0)
要回答你的第二个问题,varargs的一个优点是你可以调用一个函数来获取varargs参数而不传递该参数。相反,如果你的函数接受一个数组,并且你需要调用它而没有任何值,那么调用者需要显式传递null。