“...”在Java中使用?

时间:2012-08-13 22:53:47

标签: java constructor operators

  

可能重复:
  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。我想知道这是用来做什么的。我最好的猜测是,它允许开发人员根据需要添加任意数量的对象。但如果是这种情况,为什么不使用数组或列表呢?

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

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

5 个答案:

答案 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。