2013年7月31日 星期三

參數列表(Variable-Length Argrment Lists, 簡稱 Varargs)

參數列表(Variable-Length Argrment Lists, 簡稱 Varargs), 也稱變數長度引數表如果我們無法確定呼叫方法會傳遞幾個參數,就無法明確定義這方法的參數個數,這時我們使用 Varargs 來解決參數個數不定的問題,而參數列表對於Java來說仍視為陣列.
範例:
  1. class Varargs01 // 定義一個類別取名為Varargs01{
  2.       // 此時的String...names 就是參數列表,names會被視為陣列.  
  3.      void showOrder(String...names) 
  4. {     
  5. // 我用Order ser來顯示我點了什麼餐點
  6.                 System.out.print("Order set:"+"  "); 

  7. // 使用for-each迴圈自動走訪所有元素,這裡我們指定陣列names.
  8.                 for(String Order:names) 
  9.                         System.out.print(Order+" ");
  10.                 System.out.println(); }
  11.         public static void main(String args[]){
  12.                
  13.                // 建立一個物件給var
  14.                 Varargs01 var = new Varargs01();
  15.     
  16. /*此3個字串會自動包裝成陣列後再傳遞給(String...names)的names變數形成 
  17.        String names[] ={"Hamburger","Sandwich","Tuna Cheese"};*/
  18.            var.showOrder("Hamburger","Sandwich","Tuna Cheese");
  19.            var.showOrder("Soda","Juice");//觀念同上}
  20. }
Order set: Hamburger  Sandwich  Tuna Cheese
Order set: Soda   Juice

使用參數列表有3個限制請注意:
1.   在同一個類別內不可同時出現,因為相同類型的參數列表和陣列參數意義相同
2.  參數列表須放在所有參數的最後面如 : void showOrder(String str, String...names)
3.  1個方法只能使用1次參數列表,原因和第2點相同,編譯器會不知如何切割傳遞過來的值.