个人理解:“…”在形参中的作用即为标明该参数实际是个参数列表,可接受0…n个该类型的参数,有点类似于参数数组,但比数组灵活,测试代码如下:
import java.util.Collection;
import java.util.Collections;
import com.damontung.dgz.utils.*;
/**
*
*/
/**
* @author guangzhd
*
*/
public class Main {
static Print mPrint = Print.getPrintInstance(Main.class);
static DateUtils dateUtils = new DateUtils();
/**
*
*/
public Main() {
// TODO Auto-generated constructor stub
}
/**
* 不定长参数列表 ... ,类似于 String【】,优势在于:
* 实参可以是一个 String,也可以为空,或者多个String列表,
* 而直接使用String【】的话,则实参必须为String[]类型,不能为空,不能是String
* @param strings
*/
private void testString(final String ... strings){
mPrint.printlnMessage(strings.length);
for(String string:strings){
mPrint.printlnMessage(string);
}
}
private void testString2(final String[] strings){
mPrint.printlnMessage(strings.length);
for(String string:strings){
mPrint.printlnMessage(string);
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Main test = new Main();
String string1 = "first string";
test.testString(string1);
//test.testString2(string1);//error,类型错误
String[] strings = new String[5];
for(int i = 0; i < strings.length; i++){
strings[i] = new String(i + "->String");
}
test.testString(strings);
test.testString2(strings);
test.testString();
//test.testString2();//error
}
}