1. 程式人生 > >java方面中,引數後面跟三個點(...)的含義

java方面中,引數後面跟三個點(...)的含義

private void removeTempFiles(String... fileNames) {
for (String fileName : fileNames) {
try {
new File(fileName).delete();
} catch (Exception e) {
}
}
}

其中,  String... fileNames   代表什麼意思?
型別後面三個點(String...),是從Java 5開始,Java語言對方法引數支援一種新寫法,叫可變長度引數列表,其語法就是型別後跟...,表示此處接受的引數為0到多個Object型別的物件,或者是一個Object[]。 例如我們有一個方法叫做test(String...strings),那麼你還可以寫方法test(),但你不能寫test(String[] strings),這樣會出編譯錯誤,系統提示出現重複的方法。

在使用的時候,對於test(String...strings),你可以直接用test()去呼叫,標示沒有引數,也可以用去test("aaa"),也可以用test(new String[]{"aaa","bbb"})。

另外如果既有test(String...strings)函式,又有test()函式,我們在呼叫test()時,會優先使用test()函式。只有當沒有test()函式式,我們呼叫test(),程式才會走test(String...strings)。

例一:

public class Ttest {
//private static int a;
public static void test(int... a){
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
public static void main(String[] args) {
Ttest.test(1,2);
}
}
例二:
String... excludeProperty表示不定引數,也就是呼叫這個方法的時候這裡可以傳入多個String物件。
public static void main(String[] args) {
//測試,傳入多個引數
test("hello", "world", "13sd", "china", "cum", "ict");
}

public static void test(String... arguments) {
for (int i = 0; i < arguments.length; i++) {
System.out.println(arguments[i]);
}
}