可变参数与数组
初学时,不知道这 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) { // 编译报错,可变参数类型应该作为参数列表的最后一项 } }