首页 > 技术文章 > 可变参数与数组

xinxin-ting 2019-02-20 11:39 原文

初学时,不知道这 3个点  是什么意思,后来才知道 这是可变参数。 也可以理解成是数组。
public static String handleSrc(String... srcArr) throws Exception {
    String exportBaseSrc = System.getProperty("user.home");
    File file = new File(exportBaseSrc);
    if (!file.exists()) {
        throw new Exception("未找到根目录异常");
    }
    String src = exportBaseSrc;
    if (CheckUtils.isNotEmpty(srcArr)) {
        for (String typeStr : srcArr) {
            if (CheckUtils.isNotEmpty(typeStr)) {
                src += "/" + typeStr;
            }
        }
    }
    return src;
}

  下面说下,可变参数和数组作为参数时的区别?

1,可变参数,可以是多个,或者没有。比如:如果我调用上面那个方法:也可以这样,handleSre();参数什么也不用写

2,可变参数是兼容数组类参数的,但是数组类参数却无法兼容可变参数;实例:

说明:可变参数可以兼容数组参数 
public class TestVarArgus {
	public static void dealArray(int... intArray) {
		for (int i : intArray)
			System.out.print(i + " ");
 
		System.out.println();
	}
 
	public static void main(String args[]) {
		int[] intArray = { 1, 2, 3 };
 
		dealArray(intArray);// 通过编译,正常运行
     
	}
}
 说明:反过来就不行了。。。
public class TestVarArgus {
	public static void dealArray(int[] intArray) {
		for (int i : intArray)
			System.out.print(i + " ");
 
		System.out.println();
	}
 
	public static void main(String args[]) {
		dealArray(1, 2, 3);// 编译错误
	}
}

3,如果一个方法有多个参数,可变参数应放到最后。比如:

public class TestVarArgus {
	public static void dealArray(int count, int... intArray) {
            //编译正确
	}
 
	public static void dealArray(int... intArray, int count) {
		// 编译报错,可变参数类型应该作为参数列表的最后一项
 
	}

}

  

 

 

推荐阅读