方法签名中的Java“params”?

在C#中,如果你想要一个方法有一个不确定数量的参数,你可以使方法签名中的最后一个参数成为一个params这样方法参数看起来就像一个数组,但是允许使用该方法的每个人传递参数键入作为来电者想要的。

我相当确定Java支持类似的行为,但我无法find如何做到这一点。

在Java中称为可变参数(varargs) ,语法看起来像一个常规参数,但在types后面有一个省略号(“…”):

 public void foo(Object... bar) { for (Object baz : bar) { System.out.println(baz.toString()); } } 

vararg参数必须始终是方法签名中的最后一个参数,并且就像您接收到该types的数组(如本例中为Object[] )一样进行访问。

这将在Java中诀窍

public void foo(String parameter, Object... arguments);

您必须添加三个点...并且varagr参数必须是方法签名中的最后一个。

正如它在以前的答案写的,它是varargsellipsis

此外,您可以传递值types和/或引用types或两者混合(谷歌Autoboxing )。 另外,你可以像下面的printArgsAlternate方法那样使用方法参数作为数组。

演示代码

 public class VarargsDemo { public static void main(String[] args) { printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X')); printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X')); } private static void printArgs(Object... arguments) { System.out.print("Arguments: "); for(Object o : arguments) System.out.print(o + " "); System.out.println(); } private static void printArgsAlternate(Object... arguments) { System.out.print("Arguments: "); for(int i = 0; i < arguments.length; i++) System.out.print(arguments[i] + " "); System.out.println(); } } 

产量

 Arguments: 3 true Hello! true 25.3 a X Arguments: 3 true Hello! true 25.3 a X