码迷,mamicode.com
首页 > 其他好文 > 详细

J2SE 1.5Varargs机制(Object... params)

时间:2014-09-01 10:46:03      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:io   strong   ar   for   文件   sp   on   c   new   

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)

标签:io   strong   ar   for   文件   sp   on   c   new   

原文地址:http://blog.csdn.net/likunwen_001/article/details/38976879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!