深入java--可变参数列表
2014-12-01 14:53
471 查看
可变参数列表-Java SE5新特性
1.可变参数列表的简单实现
当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表。在以前的Java代码中,可以使用Object数组来实现这样的功能。因为,所有的类都是直接或间接继承于Object类。
当编译器发现它是一个数组,不会在其上执行任何转换,可以在可变参数列表中同时使用原始类型与包装类。
3 也可以指定所有可变参数的类型,下面的程序指定所有可变参数都必须是String。
3.可变参数列表的重载(Overloading)
如果出现重载的情况,则编译器会自动调用最适合的方法匹配之。
但可以
public class OverloadingVarargs2 {
static void f(float i,Character...args){
System.out.println("first");
}
static void f(char c,Character...args){
System.out.println("second");
}
public static void main(String[] args){
f(1,'a');
f('a','b');
}
}
1.可变参数列表的简单实现
当调用方法时,方法的参数个数或类型未知时,称其为可变参数列表。在以前的Java代码中,可以使用Object数组来实现这样的功能。因为,所有的类都是直接或间接继承于Object类。
package test.itany.www; public class Test { public static void main(String[] args) { print(new Object[]{1,"asdf",new Double(4.5)}); } public static void print<span style="font-size:12px;">Array</span>(Object[] obj) { for(Object o:obj) { System.out.print(o+" "); } } } 结果: 1 asdf 4.5 <span style="font-size:12px;">这里printArray方法使用Object数组作为参数,并使用foreach语法遍历数组,打印每个对象。</span> <div><span style="font-size:12px;">2.Java SE5实现可变参数列表</span></div><div><span style="font-size:12px;">同样的方法,参数可以这样定义,(Object…args),这样达到同样的效果。 </span></div><pre name="code" class="java">package test.itany.www; public class Test { public static void main(String[] args) { printArray(new Object[]{1,"asdf",new Double(4.5)}); printArray(1,"asdf",new Double(4.5)); } public static void printArray(Object...obj) { for(Object o:obj) { System.out.print(o+" "); } } } 结果:1 asdf 4.5 1 asdf 4.5这里,可变参数列表在输入参数时不需new一个数组,二十直接就可以输入变量,系统会自动创建一个数组,这里在for each循环中也体现出来,
当编译器发现它是一个数组,不会在其上执行任何转换,可以在可变参数列表中同时使用原始类型与包装类。
3 也可以指定所有可变参数的类型,下面的程序指定所有可变参数都必须是String。
package test.itany.www; public class Test { public static void main(String[] args) { printArray(new String[]{"asdf","ddddd"}); printArray("asdf","ffffff"); } public static void printArray(String...obj) { for(Object o:obj) { System.out.print(o+" "); } } }
package test.itany.www; public class Test { public static void main(String[] args) { printArray(new Integer[]{5,33}); printArray(2222,new Integer(5)); } public static void printArray(Integer...obj) { for(Object o:obj) { System.out.print(o+" "); } } }
3.可变参数列表的重载(Overloading)
如果出现重载的情况,则编译器会自动调用最适合的方法匹配之。
package test.itany.www; public class Test { public static void main(String[] args) { printArray("sdfsd","dsffsf"); printArray(2222,new Integer(5)); } public static void printArray(Integer...obj) { for(Object o:obj) { System.out.print(o+" "); } } public static void printArray(String...obj) { for(Object o:obj) { System.out.print(o+" "); } } } 结果:sdfsd dsffsf 2222 5 <span style="font-size:18px;"><strong><span style="color:#FF0000;">重载的方法必须保持一致的参数形式。</span></strong></span> 不允许 <pre name="code" class="java">public class OverloadingVarargs2 { static void f(float i,Character...args){ System.out.println("first"); } static void f(Character...args){ System.out.println("second"); } public static void main(String[] args){ f(1,'a'); f('a','b');//Error } }
但可以
public class OverloadingVarargs2 {
static void f(float i,Character...args){
System.out.println("first");
}
static void f(char c,Character...args){
System.out.println("second");
}
public static void main(String[] args){
f(1,'a');
f('a','b');
}
}
相关文章推荐
- java类型后面加三个点——可变长度参数列表
- Java学习笔记003——继承、抽象类、类相等测试、泛型数组列表、可变参数方法
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- java函数参数后面加三个点——可变长度参数列表
- Java可变参数关于参数列表含可变参数的方法重载的注意点
- JAVA类型后面跟3个点(可变长度参数列表)
- C和Java中函数的可变参数列表
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- Thinking in java 之:可变参数列表
- Java 方法重载(overload)、方法重写(override)和可变参数列表
- Java 可变参数列表
- JAVA的可变参数列表
- C和Java中函数的可变参数列表
- 从头认识java-4.8 数组的初始化(2)-可变参数列表
- 又学了一招——JAVA中三个点(...)的运算符,表示可变参数列表
- java中可变参数列表重载问题
- 深入了解JAVA可变长度的参数(Varargs)
- Java的可变参数列表
- Java 可变参数列表
- Java深入(高新技术)(二):开发环境、静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱、享元模式