可变参数列表与自动转型
可变参数列表是JavaSE5以后所添加的一个重要特性,它使得程序员可以用更少的代码书写出优雅的方法访问方式。
可变参数列表将大量的工作交给了编译器完成,包括参数数组的封包,自动转型等任务。
在可变参数列表功能出现以前,函数的调用格式,必须与函数的声明格式完全对应一致。即对应位置的参数,必须满足类型要求。
Example:
static double addAll(Ball[] ballArray )
{
double totalDiameter=0;
foreach(ball b:ballArray )
{
totalDiameter=b.diameter+totalDiameter;
}
}
mian()
{
Ball[] ba={new ball(1), new ball(2), new ball(3)}
addAll(ba);
}
以上为传统的函数访问方式,此方式下必须严格的保证调用形式与声明的形式一致。
可变参数类表给予了一种更为灵活的方式,使得我们在函数调用时。
数组类参数无需给出数组对象,只需给出数组中的参数列表即可。
e:
addAll(new ball(1), new ball(2), new ball(3));
此处,程序员给出的参数列表会被编译器自动的打包为一个数组,传递给addAll函数进行处理。
有些时候,可能不仅需要数组参数,还需要别的参数,可以采用以下的声明和调用方式。
Static void test(Integer i, Character... args){}
Static void test(Character... args){}
调用时:
test(1,'a');
test('a','b');
此处编译器会自动的根据函数的参数列表进行调用。
需要注意的是参数"1"为int类型(基本类型),而Integer为int的包装器类,编译器会自动的对其进行转型。