Java Varargs可以方便方法的重载,允许你指定可以采用多个同类型参数的方法,而不需要事先确定参数的数目,由此实现可变参数。Varargs形式如同 TYPE...name,只能位于参数列表的最后,name可以看做一个TYPE数组,可以包括TYPE及其子类型,通过for/in可以方便的访问每个参数。参数传递的方式可以是单个的元素,也可以是数组,但不能是元素和数组的混合形式。
本文采用Java可变参数实现了一个求最大值的函数,代码如下
// 求最大值
public static int max(int
values) throws IllegalArgumentException {
// 无参时抛出异常
if (values.length == 0)
throw new IllegalArgumentException("Argument number can't be zero");
int max = Integer.MIN_VALUE;
for (int i : values)
if (max < i)
max = i;
return max;
}
测试方法main
public static void main(String
args) {
try {
System.out.println(max(3, 7, 2));
System.out.println(max(new int[] { 9, 4, 5 }));
// 以下无法通过编译,不能为混合形式
// System.out.println(max(new int[] { 1, 7, 4 }, 3));
System.out.println(max(new Integer(1), new Integer(5))); // 自动拆箱
System.out.println(max(7, new Integer(3)));
// Integer[] is = {3,4,5,6};
// 以下无法通过编译,不能自动转换Integer[]到int[]
// System.out.println(max(is));
System.out.println(max()); // 此时有IllegalArgumentException抛出
} catch (IllegalArgumentException iae) {
System.out.println(iae);
}
}
运行结果
7
9
5
7
java.lang.IllegalArgumentException: Argument number can't be zero
可以从
此处下载源代码
有些时候,我们可能要避免自动化的将Object...转化成Object[],比如说我们要将一个Object[]类型的对象objectArray作为Object传进带Object...参数的方法,为了避免objectArray被拆散为许多单个的object,我们必须要这么写:
new Object[] {objectArray},或者强转(Object)objectArray。
posted on 2009-06-02 16:19
chenkkkabc 阅读(377)
评论(0) 编辑 收藏 所属分类:
java特性