Java 可变长参数
可变长参数
可变长参数是一种参数集合,在集合中参数的数量的不确定的,可能为一个或者多个,也可能没有参数;在这个参数集合中的每个参数类型是不确定的,我们将这个参数集合称之为可变的长参数。
定义形参长度可变的参数从而允许为方法指定数量不确定的形参。如果在定义方法时在最后一个形参类型后增加3个点即(...);则表明该形参可以接受多个参数值,多个参数值会被当做数组传入。
由于参数的类型不是固定的,那么我们就用Object类型来接收参数,Object参数是所有类型的父类,定义方法为:
public void function(Object...obj){}
对于可变参数的定义方法而言,它表示在方法名为function中有不确定数量的、类型为Object的多个或0个参数的方法,obj表示为参数集合的名字,类似于数组的用法。
使用过程中要注意的几点:
1、调用时,如果同时能匹配固定参数和可变长参数的方法,会优先匹配固定参数方法。
2、如果能同时和2个包含可变参数的方法想匹配,则编译会报错,因为编译器不知道该调用哪个方法。
3、一个方法只能有一个可变参数,且可变参数应为最后一个参数。
package jihe;
public class D03 {
public static void main(String[] args) {
D03 a = new D03();
// a.DD(null);不会报错 ,运行会空指针异常
a.DD("dy","zxy","yb","ty");
a.DD(0,"",5.5,"sb");
a.DD(8);
}
public void DD(Object...args) {
for(int i =0;i<args.length;i++)
System.out.print(args[i]+" ");
System.out.println();
}
public void DD(int a) {
System.out.println("优先匹配固定参数方法");
System.out.println(a);
}
}
/*
*dy zxy yb ty
*0 5.5 sb
*优先匹配固定参数方法
*8
*/