引用自:

 Java1.5提供了一个叫varargs的功能,就是可变长度的参数。

在以前的jdk版本中,对象中一个方法的入参个数在写好后就是固定的,而varargs提供了可变长度的功能,有点类似于main方法的参数String[] args,我们在命令行运行时args可数是可变的。

一、使用varargs写法是这样的:

public
 Guitar(String builder, String model, String... features); 
//
用省略号...声明features为可变长度的参数。

如果你声明如下方法:

public
 Guitar(String builder, String model, String... features)

编译时将被解释为:

public
 Guitar(String builder, String model, String[] features)

但是这样做还是有一些限制的。

在一个方法中只能使用一个省略号定义,也就是只能定义一个可变长的参数。

下面的定义是不合法的:

public
 Guitar(String builder, String model,String... features, 
float
... stringHeights)

 二、我们可以用下面的方法取得可变长参数:

public
 Guitar(String builder, String model,GuitarWood backSidesWood, GuitarWood topWood,
                float
 nutWidth,GuitarInlay fretboardInlay, GuitarInlay topInlay,String... features) {
        this
.builder 
=
 builder;
        this
.model 
=
 model;
        this
.backSidesWood 
=
 backSidesWood;
        this
.topWood 
=
 topWood;
        this
.nutWidth 
=
 nutWidth;
        this
.fretboardInlay 
=
 fretboardInlay;
        this
.topInlay 
=
 topInlay;
        
for
 (String feature : features) {
                System.out.println(feature);
        }
}

我们也可以这样获取可变长参数值,把features直接赋给String[],或者其他集合类型

//
 Variable declaration
private
 List features;
//
 Assignment in method or constructor body
this
.features 
=
 java.util.Arrays.asList(features);