可变参数,解决Method有不同个数参数的overload问题...
如何创建一个可变长度的参数,看代码:
引用
public void vararg(String varOne, String varTwo, String...strings ) {}
编译器会把它解析为"public void vararg(String varOne, String varTwo, String[] strings) {}",将"..."创建成一个<argument type>的array。
调用很简单...(零或以上多个参数)
引用
vararg("one","tow"); //可以不传参数
vararg("one","tow","three"); //可以传入一个参数
vararg("one","tow","three",four); //可以传入多个参数
当然,也可以传入一个数组作为参数,如:
引用
public void vararg(int... i) {
for (int ivalue : i) {
System.out.println("the i value is: " +ivalue);
}
}
引用
//调用
int[] i = {1,2,3,4,5,6};
new ObjectB().vararg(i);
输出
引用
the i value is: 1
the i value is: 2
the i value is: 3
the i value is: 4
the i value is: 5
the i value is: 6
当然,如果是接受到一个零长度的list,最好做一个判断,可以抛出IllegalArgumentException异常。
But,有些限制:
1.一个方法只能有一个可变参数(一个省略号)
2.省略号只能写在方法参数列表的最后一个。
迭代可变参数List
将vararg当array来使用...如:
引用
public void vararg(String...strings ) {
for (String str : strings) {
System.out.println("the vararg value is: " +str);
}
}
输出
引用
the vararg value is: One
the vararg value is: Two
the vararg value is: Three
也可以将可变参数存在变量中...
引用
public void vararg(String...strings ) {
String[] arr = strings;[color]//存在数组当中,因为自动将String... strings转成String[] strings.
List list = Arrays.asList(strings);//存在list当中
}
由于Tiger是autoboxing和auto-unboxing,所以,当我们需要使用primitive参数的时候,我们也可以在Method中使用wrapper类型,由于wrapper都是Object类型,因此用Object... object作为参数最好了.
引用
public void vararg(Object... object) {
for (Object o : object) {
System.out.println("the object value is: " +o.toString());
}
}
//调用
引用
Integer[] i = {1,2,3};//只能用Integer,如果用int,print不出来具体的值。。。
String[] str = {"A","B","C"};
ObjectB b = new ObjectB();
b.vararg(i);
b.vararg(str);
结果
引用
//Integer类型
the object value is: 1
the object value is: 2
the object value is: 3
//String类型
the object value is: A
the object value is: B
the object value is: C
还有一个情况出现...例如
引用
String[] str = {"A","B","C"};
System.out.printf("the array values are: %s " , str);
输出是:
引用
the array values are: A
因为只会取str的第一个元素的值...可以这样写
引用
System.out.printf("the array values are: %s " ,(Object)str);
分享到:
相关推荐
在安装对象管理界面上这些安装对象采用面向对象的树状结构组织,这个树状结构由可选包组成,每个可选包都可以包含上面除了系统信息以外的所有对象。用户可以非常直观的像在Windows中的资源管理器中一样地管理这些...
Tiger办公1216.apk
tiger语言的语法手册,拿《Modern Compiler》做编译原理课程设计的必备哦~~~
3-2 攻克 36TB LDBC:TigerGraph可扩展图数据和分析平台
JAVA 5.0 TIGER程序高手秘笈.
使用于win7系统字体文件缺失导致数学符号无法使用的现象。
泰坦Tiger_Touch中文说明书 珍珠(Pearl)Tiger Touch 控制台是Avolites最新推出的一款灯光控制台,Avolites的灯光控制台从使用普及性来说应该是最广的。本着参与交流的意愿,以自己的行业经验,和略懂的英文知识,...
Tiger Installer 是一个具有强大的功能而又简单易用的安装程序制作(EXE打包)软件。
erlang开发的开源高可靠性nosql数据库tiger介绍可靠性: 写:对于n=2f 1 机器集群,在f台机器宕机的情况下可写 读:只要是没有宕机的机器都是可读的一致性: 强一致性扩展性: 读的能力可以线性扩展 功能: ...
tiger_install 本软件是专为用Delphi 开发的程序制作安装程序用的,很方便实用,操作简单
Java5.0 Tiger 程序员高手秘笈一书的源代码,很有学习价格,这是完整的配书源码。
Tigerboard-II硬件说明.pdf
2021年环卫考察学习总结-tiger.docx
jdk1.5 tiger java5 新特性
实现了词法分析,语法分析,语法树,类型检查,内有testcase
在安装对象管理界面上这些安装对象采用面向对象的树状结构组织,这个树状结构由可选包组成,每个可选包都可以包含上面除了系统信息以外的所有对象。用户可以非常直观的像在Windows中的资源管理器中一样地管理这些...
macair系统快捷键大全Tiger最新版.pdfmacair系统快捷键大全Tiger最新版.pdfmacair系统快捷键大全Tiger最新版.pdfmacair系统快捷键大全Tiger最新版.pdfmacair系统快捷键大全Tiger最新版.pdfmacair系统快捷键大全Tiger...
Mac OS X 10.4 Tiger Retail DVD 镜像下载地址,用于apple tv 第一代机顶盒。
苹果风格MacOSX_Tiger_Theme_Pack苹果风格MacOSX_Tiger_Theme_Pack