文章作者:Tyan
博客:noahsnail.com
1. 可变参数Varargs介绍
在JDK 1.5之前,要想在方法中使用可变参数,则必须通过数组(或其它集合)来实现,在这种情况下你需要将变量显式的定义在数组中,在使用时要从数组中取出变量。另一种方法是进行函数重载。而在JDK 1.5中,引入了可变参数(Varargs),全称为variable number of arguments,常被称为variable arguments。可变参数仍然是通过数组来实现的,只不过编译器帮你隐式的实现了这个过程,此外,它还能兼容以前的API。
可变参数,也就是说可以在参数列表中使用个数不确定的参数,最经典的例子就是Java中的main方法,参数的个数没有办法确定,此时就可以使用可变参数来处理方法中的参数。使用时可以按照数组的使用方式来用。
下面是可变参数定义的例子:
1 | public static String format(String pattern, Object... arguments) { |
2. 使用可变参数的一个例子
1 | public class IntSum { |
输出结果为:1,3,6。
1 | public class IntSum { |
输出结果为:0,3,6
3. 使用可变参数的注意事项
可变参数只有当参数数目不确定时才会使用。
当参数中需要T[]作为参数时,可以考虑使用可变参数。
可变参数只能用在参数列表中的最后一个位置,且方法中只能有一个可变参数。
在方法调用时,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则优先选择固定参数的方法。
由于使用可变参数需要隐式的创建匿名数组并初始化,因此会影响性能,在性能优先的情况下慎用。
尽量避免重载含有可变参数的方法。
可变参数输入时不能传
null
值。Arrays.asList()方法支持可变参数。
参考资料:
1、Effective Java 2.0
2、http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html
3、http://www.cnblogs.com/lanxuezaipiao/p/3190673.html
4、http://javarevisited.blogspot.com/2011/09/variable-argument-in-java5-varargs.html