黑马程序员技术交流社区
标题:
可变参数为什么要定义在参数列表的最后面?
[打印本页]
作者:
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