可變參數(shù) 就是 可以給函數(shù)傳入 任意個(gè)數(shù) 個(gè)參數(shù)
package com.shuai.advance;
/**
* Created by shuai
* on 2017/8/15.
*/
public class VarParamsTest {
// 可變參數(shù) 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 中方法的反射類(lèi) Method類(lèi)中的 invoke 方法也采用了可變參數(shù)
因?yàn)?invoke 的時(shí)候不能確定函數(shù)的參數(shù)個(gè)數(shù)
@CallerSensitive
public Object invoke(Object obj, Object... args) // 可變參數(shù)
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);
}