java:我如何创建一个支持任意数量参数的函数?

ufk*_*ufk 25 java variadic-functions

是否可以在java中创建一个支持任意数量参数的函数,然后能够遍历提供给函数的每个参数?

谢谢

幼狮

wkl*_*wkl 42

Java Varargs.

像这样...

public void func(String ... strings) {
    for (String s : strings)
         System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)

注意,如果你想要一些最小数量的参数必须传递给一个函数,同时仍然允许变量参数,你应该做这样的事情.例如,如果您有一个至少需要一个字符串的函数,然后是一个可变长度参数列表:

public void func2(String s1, String ... strings) {

}
Run Code Online (Sandbox Code Playgroud)

  • @trusktr是的,您可以声明一个`func(Object ... args)`签名来支持可变数量的泛型`Object`.如果您将一个原语传递给该函数,它将被自动装箱到其相应的包装类中.调用`func(1,2,3.0)`会将前两个参数自动放入`Integer`,第三个变为`Double`. (2认同)

kgi*_*kis 7

正如其他人指出你可以使用Varargs:

void myMethod(Object... args) 
Run Code Online (Sandbox Code Playgroud)

这实际上相当于:

void myMethod(Object[] args) 
Run Code Online (Sandbox Code Playgroud)

事实上,编译器将第一种形式转换为第二种形式 - 字节代码没有区别.所有参数必须是相同的类型,因此如果要使用具有不同类型的参数,则需要使用Object类型并执行必要的转换.


Ski*_*ick 5

是的,使用varargs.