黑马程序员技术交流社区

标题: 可变参数为什么要定义在参数列表的最后面? [打印本页]

作者: zhrnghgwsws    时间: 2014-5-23 13:43
标题: 可变参数为什么要定义在参数列表的最后面?
本帖最后由 zhrnghgwsws 于 2014-5-23 14:56 编辑

可变参数为什么要定义在参数列表的最后面?
作者: fufeng    时间: 2014-5-23 14:07
先来了解一下如下java中是之前是如何处理的:
void  add(int a )
void  add(int a, int b)
void  add (int a,int b,int c)
比如这里的add方法就是向集合中添加元素的方法,我们发现这样的重载会使得代码很臃肿,而且复用性也不是很高。
在之前的java版本中是这样设计的:
void  add(int[]  a)
就是将接受到的参数类型变成一个数组,在方法中对数组进行遍历,这样数组中有几个元素,就添加几个元素,从而就简化
了程序。

后来就出现了可变参数了,就可以将上边的代码写为:
void  add(int...)
虽然形式上发生了改变,但其内部的调用方式是没有变化的,也就是将接受来个数不确定的参数,装在一个数组中,而且
从int...开始后所有的参数,就会作为数组中的元素装进数组中。
当然有的时候,参数中包含其他参数和可变参数,比如:
void  add(String  str,int...):那么从int...开始之后的参数就是可变参数,而str这个参数就不装入到数组中了。
那么,如果写成
void  add(int...,String str) :根据调用的规则,str也会作为一个参数添加到数组中去,这当然与我们的程序设计初衷是不相符的。

所以,在使用可变参数的时候,要将可变参数定义在参数列表的最后面。


作者: 自笃行者    时间: 2014-6-6 22:15
谢谢哈 受启发了
作者: 孑拓2014    时间: 2014-8-15 09:46
没考虑过这个问题,哈哈,受教了
作者: 誓_″___訁、    时间: 2015-4-27 21:26
谢谢整理!
作者: innovator    时间: 2016-5-31 10:08
受教学习了,一直没有注意到这个




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2