越来越多的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。