可变参数列表与自动转型

可变参数列表是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的包装器类,编译器会自动的对其进行转型。

原文地址:https://www.cnblogs.com/airwindow/p/2553242.html