1. 程式人生 > >java引數後面跟三個點所代表的意思

java引數後面跟三個點所代表的意思

java引數後面跟三個點是什麼意思 (2011-04-14 11:55:36)轉載
標籤: it    分類: OutStandingIdeas
AVA中型別後面跟三個點是什麼來的。
瀏覽次數:808次懸賞分:5 | 解決時間:2009-6-26 10:30 | 提問者:不完美的ID

看程式碼中那個三點,這樣做起到過載的作用,但這是什麼意思?

class Father
{
    public void foo(String... s)
    {
        System.out.println("Father:foo");
       
    }
     public void bar(String s)
    {
        System.out.println("Father:bar");
    }
}
class Son extends Father
{
    
    public void foo(String s)
    {
        System.out.println("Son:foo");
    }
   
     public void bar(String s)
    {
        System.out.println("Son:bar");
    }
}
===============================================================
不懂這句是什麼意思 public void foo(String... s)
最佳答案

可變陣列引數。用...的話,傳引數時可傳可不傳,傳的話,可以是一個個並列地傳,也可以直接是一個數組。

在方法裡取時,s是一個數組,如果呼叫時什麼都沒有傳,那麼s的長度就是0。傳的時候傳了幾個,s的長度就是幾。

還有,1.5以上才支援這個功能。
寫的例子:

public class Number3 {
 public static void main(String[] args) {
  printString();
  System.out.println("==========");
  printString(new String[]{"我","和","你"});
  System.out.println("==========");
  printString("我","和","你");
 }
 public static void printString(String... str){
  if(str.length==0){
   System.out.println("沒有傳引數。");
  }
  for (int i = 0; i < str.length; i++) {
   System.out.println(str[i]);
  }
 }
}


================================================
java中這種寫法是什麼意思?
2011-4-6 16:12 提問者:g882 | 瀏覽次數:409次
private void removeTempFiles(String... fileNames) {
        for (String fileName : fileNames) {
            try {
                new File(fileName).delete();
            } catch (Exception e) {
            }
        }
    }


其中,  String... fileNames   代表什麼意思?
2011-4-6 16:26 最佳答案
型別後面三個點(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]);
            }
        }