参考:http://xhpscdx.iteye.com/blog/706946

JDK1.5引进了方法的可变参数,受到许多开发人员的青睐。

1,基本使用:

public class MethodNum {
	public void method(String... strings) {
		System.out.println("The argument num is : "+strings.length);
	}
//	public void method(String[] strings) {
//		System.out.println("The argument num is : "+strings.length);
//	}
	public static void main(String[] args) {
		MethodNum m = new MethodNum();
		m.method();
		m.method("s","2");
	}
}

 函数中直接认为,strings为string[]就行了。

 2,可变参数方法与数组参数方法不好重载,认为方法重复

public class MethodNum {
	public void method(String... strings) {
		System.out.println("The argument num is : "+strings.length);
	}
	public void method(String[] strings) {
		System.out.println("The argument num is : "+strings.length);
	}
	public static void main(String[] args) {
		MethodNum m = new MethodNum();
		m.method();
		m.method("s","2");
	}
}

 

3,同一类型的可变与不可不混搭一个不好重载。

public class MethodNum {
	public void method(String... strings) {
		System.out.println("The argument num is : "+strings.length);
	}
	public void method(String str, String... strings) {
		System.out.println("The argument num is : "+strings.length);
	}
	public static void main(String[] args) {
		MethodNum m = new MethodNum();
//		m.method();
		m.method("s","2","s");
	}
}

 

编译器认为有歧义。

Array中的类文件有就使用了可变参数:

public static <T> List<T> asList(T... a) {
	return new ArrayList<T>(a);
    }

 

例子:

List<String> messages = Arrays.asList(
        "Mares eat oats",
        "Does eat oats",
        "Little lambs eat ivy",
        "Wouldn't you eat ivy too?");