可变参数 就是 可以给函数传入 任意个数 个参数
package com.shuai.advance;
/**
* Created by shuai
* on 2017/8/15.
*/
public class VarParamsTest {
// 可变参数 since 1.5
private static int sum(int... arr) {
int s = 0;
for (int a : arr) s += a;
return s;
}
public static void main(String[] args) {
System.out.println(sum(1, 2, 3));
}
}
Java 中方法的反射类 Method类中的 invoke 方法也采用了可变参数
因为 invoke 的时候不能确定函数的参数个数
@CallerSensitive
public Object invoke(Object obj, Object... args) // 可变参数
throws IllegalAccessException, IllegalArgumentException,
InvocationTargetException
{
if (!override) {
if (!Reflection.quickCheckMemberAccess(clazz, modifiers)) {
Class> caller = Reflection.getCallerClass();
checkAccess(caller, clazz, obj, modifiers);
}
}
MethodAccessor ma = methodAccessor; // read volatile
if (ma == null) {
ma = acquireMethodAccessor();
}
return ma.invoke(obj, args);
}