在 J2SE 5.0 中开始支持不定长度参数(Variable-Length Argument),直接来看个例子:
public class MathTool { 要使用不定长度参数,在声明参数时,于关键字后加上...,然后您可以这么使用它:
public class TestVarargs { 执行结果会分别显示3、6、15。 显然的,从MathTool类的sum()中您可以看到,实际上编译器会将int... nums解译为int[]
nums,而设定给方法的参数则会被化为int数组传入至sum()中,您只要将nums当作数组来处理就是了。 public void someMethod(int arg1, int arg2, int... varargs) {
// .... } 但下面的方式是不合法的: public void someMethod(int... varargs, int arg1, int arg2) {
// .... } 您也没办法设定两个以上的不定长度参数,例如下面的方式是不合法的: public void someMethod(int... varargs1, int... varargs2) {
// .... } 如果要对象的不定长度参数,其方法相同,例如: public void someMethod(SomeClass... somes) {
// .... } 回忆一下 给C使用者的第一个Java程序 中您介绍的printf(),在其中您可以设定多个参数,其实背后也是不定长度参数的原理,例如: System.out.printf("My name is %s and your name is %s.",
"caterpillar", "momor"); 编译器会帮您解译printf()的 ',' 之后的参数为数组,再传入 printf() 中作对应的处理。 |