方法签名中的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
参数必须是方法签名中的最后一个。
正如它在以前的答案写的,它是varargs
和ellipsis
( … )
此外,您可以传递值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