首页 > 代码库 > Java可变参数

Java可变参数

1. 可变参数等同于数组参数

public void add(int[] ints) {
}
public void add(int...intt) {
}
以上代码是无法通过编译的。
 

2. 向上兼容

可变参数是JDK5的一个新特性,在此之前是通过数组来满足需求的。所以可变参数可以接受一个相同类型的数组,但是数组类型的参数不能够接受可变参数。
@Test
public void test01() {
     int[] ints = {1, 3, 9, 20};
     add2(ints); //这句代码可以正确运行(可变参数接受数组)
     add2(1, 3, 9, 20); //这句代码可以正确运行(可变参数接受可变参数)
     add(ints); //这句代码可以正确运行(数组参数接受数组)
     add(1, 3, 9, 20); //这句代码无法通过编译(数组参数接受可变参数)
}

public int add(int[] ints) {
    int sum = 0;
    for (int anInt : ints) {
        sum += anInt;
    }
    return sum;
}

public int add2(int...intt) {
    int sum = 0;
    for (int anInt : intt) {
        sum += anInt;
    }
    return sum;
}
 

3. 可变参数必须是参数列表中的最后一个参数

这个很容易就可以想明白。如果第一个参数是可变参数的话,那么编译器就要疯了,因为它不知道到底哪个是第2个参数。
public void add(int...intt, String s) {
}//这个方法无法通过编译器的检查。


来自为知笔记(Wiz)