J2SE5.0 執行個體---變長參數

來源:互聯網
上載者:User
j2se 變長參數(Varargs)
與泛型一樣,變長參數是C++中有而Java中沒有的一種語言特性,在過去如果我們想向一個函數傳遞可變數量的函數,就必須首先將這些參數放入一個數組中,然後將數組傳遞給函數。就如同下面所作的一樣:

Object[] arguments = { 640, "kb", "anybody", "Bill Gates" };

String result = MessageFormat.format(

     "{3}:{0,number,integer}{1} ought to be enough for {2}  ",

     arguments);

在J2SE5.0中,參數仍然是被放入一個數組中傳給對應的方法,但是不同的是,你不再需要手動的建立數組,而是只需要將那些參數羅列出來,其他的工作由虛擬機器替你完成。所以現在我們可以這樣寫:

String result = MessageFormat.format(

            "{3}:{0,number,integer}{1} ought to be enough for {2}  ",

            640, "kb", "anybody", "Bill Gates");

我們通過一個樣本函數來說明使用變長參數函數的定義。這個函數列印出一個人養的幾條狗的名字。

private void printDogNames(String... dogs)

{

  System.out.println("I have " + dogs.length + " dogs:");

  for(String dogname:dogs)

  {

     System.out.println(dogname);

  }

}

事實上變長參數dogs是一個數組。

一個函數的參數中只能有一個變長參數,所以類似下面的定義是不合法的:

private void printDogNames(String... dogs,float... dogage)

如果決定把函數參數設定為可變長度的,你必須想到這樣一種情況,就是調用的程式很可能會不給你傳任何的參數,這個時候作為參數的數組length為0,而這在文法上是完全合法的,所以你必須在函數定義中考慮到這種情況。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.