越来越多的Java库使用了可变长参数,不再需要加一个new Object[]那么别扭。
那么如何自己实现一个这样的可变长函数呢?
我们就以实现一个一长串的整数相加作为例子:
变长参数是用T...标明,在函数体内,其实就是一个类型为T的数组,然后像操作数组那样进行变长参数就行了。
例子:
public class KMath {
public static int add(int... args) {
int result = 0;
for (int arg : args) {
result += arg;
}
return result;
}
}
需要注意的是,这个T...必须放在参数列表的最后面,这样才能够避免歧义。
测试代码:
public class VariableArgLengthListTest {
@Test
public void test_variable_length_arg_list_works() {
assertThat(KMath.add(1, 2, 3, 4), is(10));
assertThat(KMath.add(1, 2, 3), is(6));
assertThat(KMath.add(1, 2), is(3));
assertThat(KMath.add(1), is(1));
}
}
Done。