代码改变世界

Java中编写可变长参数的函数

2013-07-15 18:00  java20130722  阅读(231)  评论(0编辑  收藏  举报

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