當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Java Variable Arguments(Varargs)用法及代碼示例

在JDK 5中,Java包含了一項函數,該函數簡化了需要采用可變數量參數的方法的創建。此函數稱為varargs,可變長度參數為short-form。帶有可變數量參數的方法是varargs方法。
在JDK 5之前,可變長度參數可以通過兩種方式處理。一個使用重載方法(每個使用一個重載),另一個使用參數重載到數組中,然後將此數組傳遞給方法。它們都可能是error-prone,並且需要更多代碼。 varargs函數提供了更簡單,更好的選擇。

varargs的語法:
可變長度參數由三個句點(…)指定。例如,

public static void fun(int ... a) 
{
   // method body
} 

該語法告訴編譯器可以使用零個或多個參數來調用fun()。結果,這裏a被隱式聲明為int []類型的數組。以下是用於說明上述概念的代碼段:


// Java program to demonstrate varargs 
class Test1 
{ 
    // A method that takes variable number of integer 
    // arguments. 
    static void fun(int ...a) 
    { 
        System.out.println("Number of arguments:" + a.length); 
  
        // using for each loop to display contents of a 
        for (int i:a) 
            System.out.print(i + " "); 
        System.out.println(); 
    } 
  
    // Driver code 
    public static void main(String args[]) 
    { 
        // Calling the varargs method with different number 
        // of parameters 
        fun(100);         // one parameter 
        fun(1, 2, 3, 4);  // four parameters 
        fun();            // no parameter 
    } 
}

輸出:

Number of arguments:1
100 
Number of arguments:4
1 2 3 4 
Number of arguments:0

    以上程序說明:

    • …語法告訴編譯器已使用了varargs,這些參數應存儲在a所引用的數組中。
    • 變量a作為數組操作。在這種情況下,我們將a的數據類型定義為int。因此,它隻能采用整數值。可以使用a.length來找到參數的數量,這是我們在Java中找到數組長度的方式。

    注意:一種方法也可以具有可變長度的參數以及其他參數,但是應確保在方法聲明的參數列表中僅存在一個應最後寫入的varargs參數。

 int nums(int a, float b, double … c)

在這種情況下,前兩個參數與前兩個參數匹配,其餘參數屬於c。

// Java program to demonstrate varargs with normal 
// arguments 
class Test2 
{ 
    // Takes string as a argument followed by varargs 
    static void fun2(String str, int ...a) 
    { 
        System.out.println("String:" + str); 
        System.out.println("Number of arguments is:"+ a.length); 
  
        // using for each loop to display contents of a 
        for (int i:a) 
            System.out.print(i + " "); 
  
        System.out.println(); 
    } 
  
    public static void main(String args[]) 
    { 
        // Calling fun2() with different parameter 
        fun2("GeeksforGeeks", 100, 200); 
        fun2("CSPortal", 1, 2, 3, 4, 5); 
        fun2("forGeeks"); 
    } 
}
String:GeeksforGeeks
Number of arguments is:2
100 200 
String:CSportal
Number of arguments is:5
1 2 3 4 5 
String:forGeeks
Number of arguments is:0

重要事項:

  • Vararg方法也可以重載,但重載可能導致歧義。
  • 在JDK 5之前,可變長度參數可以用兩種方法處理:一種方法是使用重載,另一種方法是使用數組參數。
  • 一個方法中隻能有一個變量參數。
  • 可變參數(varargs)必須是最後一個參數。

Erroneous varargs Examples

  • 在單個方法中指定兩個varargs:
    void method(String... gfg, int... q)
    {
        // Compile time error as there are two
        // varargs
    }
    
  • 將varargs指定為method的第一個參數,而不是最後一個參數:
    void method(int... gfg, String q)
    {
        // Compile time error as vararg appear
        // before normal argument
    }
    



注:本文由純淨天空篩選整理自 Variable Arguments (Varargs) in Java。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。