黑马程序员技术交流社区

标题: 1.5新特性——可变参数的一个问题 [打印本页]

作者: Stephen_Chow    时间: 2013-11-1 16:50
标题: 1.5新特性——可变参数的一个问题
学到可变参数这一块,碰到了很多问题,查完以后,知道了可变参数的一些用法:
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:
讲的逻辑差了点,大家将就着看吧,呜呜

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

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





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