方法签名中的 Java“ params”?

在 C # 中,如果你想让一个方法拥有不确定数量的参数,你可以将方法签名中的最后一个参数设置为 params,这样方法参数看起来就像一个数组,但是允许每个使用该方法的人都可以根据调用者的需要传递该类型的参数。

我相当肯定 Java 支持类似的行为,但我不知道如何做到这一点。

88875 次浏览

In Java it's called Varargs, and the syntax looks like a regular parameter, but with an ellipsis ("...") after the type:

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

Vararg 参数必须是方法签名中的 最后参数,它的访问方式与接收到该类型的数组类似(例如本例中的 Object[])。

这在 Java 中很有用

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

You have to add three points ... and the varagr parameter must be the last in the method's signature.

因为它写在以前的答案,它是 varargs和声明与 ellipsis(...)

此外,您可以传递值类型和/或引用类型,或者两者混合(google 自动装箱)。此外,您可以使用方法参数作为数组,如下面的 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