首页 > 代码库 > J2SE 1.5Varargs机制(Object... params)
J2SE 1.5Varargs机制(Object... params)
1. 用数组包裹实参
“用数组包裹实参”的做法可以分成三步:首先,为这个方法定义一个数组型的参数;然后在调用时,生成一个包含了所有要传递的实参的数组;最后,把这个数组作为一个实参传递过去。
这种做法可以有效的达到“让方法可以接受个数可变的参数”的目的,只是调用时的形式不够简单。
J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。
Varargs的含义
大体说来,“Varargs”是“variable number of arguments”的意思。有时候也被简单的称为“variable arguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍微有点模糊。
2. 定义实参个数可变的方法
只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“...”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。
清单1:一个实参个数可变的方法
private static int sumUp(int... values) {
}
注意,只有最后一个形参才能被定义成“能和不确定个实参相匹配”的。因此,一个方法里只能有一个这样的形参。另外,如果这个方法还有其它的形参,要把它们放到前面的位置上。
编译器会在背地里把这最后一个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。
3. 看下面的实际例子
public class Test {
public static void generaUser(String[] args1) {
for (int i = 0; i < args1.length; i++) {
System.out.println(args1[i]);
}
}
public static void newBehaviour(int index,String... args2) {
for (int i = 0; i < args2.length; i++) {
System.out.println(args2[i]);
}
System.out.println("newBehaviour index="+index);
}
public static void main(String[] args){
Test.generaUser(new String[]{"1","2","4","5","6"});
Test.newBehaviour(-1,"0","3","2","1");
}
}
J2SE 1.5Varargs机制(Object... params)