A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Stephen_Chow 中级黑马   /  2013-11-1 16:50  /  842 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

学到可变参数这一块,碰到了很多问题,查完以后,知道了可变参数的一些用法:
1)可变参数只能位于最后一个参数:
那问题就来了。我定义一个方法:public void  show (int...args,String str){}
然后我调用的时候:show(1,2,3,“hellojava”)这样传参数。
在MyEclipse中会提示小红叉:the variable argument type int of the method show must be the last parameter

但是很直白的想,前面的int参数传给args的数组,最后一个自然传给String str,道理上说的通呀,为什么JVM不让呢?

不知道源代码是怎么写的。

2)参数只能有一个可变参数:
那问题如果我想产生这样的函数:public void show(int...in,String...str),编译时错误的。
那如果我有这样的需求(需要传入多个可变参数),而又不能使用可变参数,那是不是很麻烦,有什么可以解决这个弊端的吗。


PS:
讲的逻辑差了点,大家将就着看吧,呜呜

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
1.道理说的通,你想想如果让你来实现你该怎么实现,会多多少代码,程序员顺手调个顺序的事,而且还不容易出错
2.以前没有可变参数的时候用数组传参,不也这么过来了么,就是传参和取参需要读取数组元素有点麻烦而已
回复 使用道具 举报
本帖最后由 王雷1 于 2013-11-1 20:17 编辑

可变参数 必须作为参数的最后一个。 是JAVA对可变参数的规定。 遵守就好。 这样做的原因是为了解决这样的问题
public void  show (int...args,int...i)
这样的话。  如果在传入 值的时候 就不能这个值到底是哪一个参数中的了。
而你的写法 虽然 逻辑上你认识。  但是虚拟机已经规定死了。
2:
如果你要穿多个不确定的值。 可以把方法的参数写成集合或者数组  其实可变参数 就是一个数组。

评分

参与人数 1技术分 +1 收起 理由
To + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马