Java中可变长度参数代码详解-创新互联

到J2SE1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了。尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的。

成都创新互联公司专注于朔州网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供朔州营销型网站建设,朔州网站制作、朔州网页设计、朔州网站官网定制、小程序设计服务,打造朔州网络公司原创品牌,更为您提供朔州网站排名全网营销落地服务。

然而,有些方法的语义要求它们必须能接受个数可变的实参——例如著名的main方法,就需要能接受所有的命令行参数为实参,而命令行参数的数目,事先根本无法确定下来。

对于这个问题,传统上一般是采用“利用一个数组来包裹要传递的实参”的做法来应付。

1.用数组包裹实参

“用数组包裹实参”的做法可以分成三步:首先,为这个方法定义一个数组型的参数;然后在调用时,生成一个包含了所有要传递的实参的数组;最后,把这个数组作为一个实参传递过去。

这种做法可以有效的达到“让方法可以接受个数可变的参数”的目的,只是调用时的形式不够简单。

J2SE1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。

Varargs的含义

大体说来,“Varargs”是“variablenumberofarguments”的意思。有时候也被简单的称为“variablearguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍微有点模糊。

2.定义实参个数可变的方法

只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“...”,英文里的句中省略号),就可以让它和不确定个实参相匹配。而一个带有这样的形参的方法,就是一个实参个数可变的方法。

清单1:一个实参个数可变的方法

private static int sumUp(int... values) {
}

文章名称:Java中可变长度参数代码详解-创新互联
当前网址:http://azwzsj.com/article/dscspc.html