您好,欢迎来到微智科技网。
搜索
您的当前位置:首页Java新特性之-可变参数

Java新特性之-可变参数

来源:微智科技网
Java新特性之-可变参数(Varargs)

注意:仅仅是参数的个数不确定,并不是参数的类型不确定!!注意了!!!!

可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象, util.write(obj1);

util.write(obj1,obj2);

util.write(obj1,obj2,obj3); …

在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了

public void write(Object... objs) { for (Object obj: objs)

System.out.println(obj); }

在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod(\"test\Object[0]).invoke(c.newInstance(), new Object[0])),

现在我们可以这样写了c.getMethod(\"test\").invoke(c.newInstance()),这样的代码比原来清楚了很多。

--------------------------------------- 定义:

public int sum(int... n) { //传过来n为一个int型数组

int tempSum;

for(int option : n) { tempSum+=option; } /*

for(int i = 0; i < n.length; i++) { tempSum+=n[i]; } */

return tempSum; }

调用1: sum(1); 调用2: sum(1,2); 调用3: sum(1,2,3,4);

--------------------------------------- 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法:

1. 重载,多重载几个方法,尽可能的满足参数的个数。显然这不是什么好办法。

2. 将参数作为一个数组传入。虽然这样我们只需一个方法即可,但是,为了传递这个数组,我们需要先声明一个数组,然后将参数一个一个加到数组中。

现在,我们可以使用可变长参数解决这个问题。

声明可变长参数方式如下:

public void mymethod(String arg1,Object… args)

也就是使用…将参数声明成可变长参数。

显然,可变长参数必须是最后一个参数。

请看下面唐僧师傅给悟空讲佛经的例子:

package com.kuaff.jdk5;

public class Varargs1 {

public void speak(String name,Object... arguments)

{

for(Object object : arguments)

{

System.out.println(object);

}

}

public static void main(String[] args)

{

Varargs1 va = new Varargs1();

va.speak(\"悟空\人和妖精都是妈生的,\");

va.speak(\"悟空\不同的人是人他妈生的,\妖是妖他妈生的,\");

} }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务