java參數後面 跟 三個點 含義 理解

來源:互聯網
上載者:User

看代碼中那個三點,這樣做起到重載的作用,但這是什麼意思。

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]);
            }
        }

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.