Java 中的可變引數
Mohammad Irfan
2023年10月12日
變數引數 varargs
是 Java 中的一個概念。我們可以為方法提供可變數量的引數零或多個引數
。
通常,一個方法接受其簽名中提到的相同數量的引數,但使用 varargs
,我們可以傳遞任意數量的引數。
我們也可以使用 overloaded
方法,或者我們也可以使用以陣列作為引數的方法來達到同樣的目的,但它被認為不好,因為它會導致維護問題。
我們需要在 Java 中使用 varargs
的原因是:
- 我們不知道要為方法傳遞的引數數量。
- 我們希望將無限數量的引數傳遞給方法。
變數引數的語法 Varargs
Ib Java
public static void show(int... a) {
// body of the method
}
在 varargs
中,我們在資料型別後面使用三個點。讓我們通過程式碼示例來理解。
在 Java 中使用 Varargs
引數
在這個例子中,我們建立了一個接受 varargs
引數的 show()
方法,並且在呼叫期間,我們傳遞了不同數量的引數。此方法適用於所有引數長度。
public class SimpleTesting {
// show method that takes the variable number of integers as arguments
static void show(int... a) {
System.out.println("Number of arguments: " + a.length);
// using for-each loop for printing each element of a
for (int element : a) {
System.out.println(element);
}
}
// Driver code
public static void main(String[] args) {
// one parameter
show(25);
// four parameters
show(10, 20, 30, 40);
// zero parameters
show();
}
}
輸出:
Number of arguments: 1
25
Number of arguments: 4
10
20
30
40
Number of arguments: 0
我們建立了一個方法 show()
,它接受可變數量的整數引數。我們已經將陣列的資料型別宣告為 int
。所以它只能取整數
值。
我們使用 a.length()
方法來確定引數的數量。然後我們建立了每個迴圈來顯示 a
的內容。
然後,我們用一個引數
、四個引數
和無引數
呼叫 varargs
方法。我們可以為方法提供可變長度的引數。
儘管如此,我們必須記住,我們只能為方法提供一個 varargs
引數,並且應該將其最後寫入方法宣告的引數列表中。
例如:
static void show(String value, float b, int... a)
在這種情況下,我們必須將第一個引數作為字串提供,第二個引數是浮點數,然後我們可以將其餘引數作為整數提供。
public class SimpleTesting {
// show mehtod that takes string and float as argument followed by varargs
static void show(String value, float b, int... a) {
System.out.println("String: " + value);
System.out.println("Number of arguments: " + a.length);
// using for-each loop for printing each element of a
for (int element : a) {
System.out.println(element);
}
}
// Driver code
public static void main(String[] args) {
// calling the varargs method with different number of parameters
show("Java Exercise", 10.2f, 1);
show("Virat", 20.2f, 1, 2, 3, 4, 5);
show("Rohit", 22.5f);
}
}
輸出:
String: Java Exercise
Number of arguments: 1
1
String: Virat
Number of arguments: 5
1
2
3
4
5
String: Rohit
Number of arguments: 0
在 Java 中過載變數引數方法
此示例演示如何覆蓋接受 varargs
引數的方法。請參見下面的示例。
class SimpleTesting {
// method overloading example takes integers as a variable arguments
private void show(int... a) {
int sum = 0;
for (int element : a) {
sum += element;
}
System.out.println("sum = " + sum);
}
// takes boolean as a argument followed by varargs
private void show(boolean p, String... args) {
boolean negate = !p;
System.out.println("negate = " + negate);
System.out.println("args.length = " + args.length);
}
// Driver code
public static void main(String[] args) {
SimpleTesting obj = new SimpleTesting();
obj.show(11, 22, 33);
obj.show(true, "virat", "Rohit");
}
}
輸出:
sum = 66
negate = false
args.length = 2
varargs
的規則是:
- 我們只能在方法中提供一個變數引數。
- 變數引數必須是最後一個引數。
一些無法編譯的 varargs
示例:
void method(float... a, int... b) {} // Compile time error
void method(double... a, String b) {} // Compile time error
在本文中,我們瞭解了 varargs
。我們已經瞭解了為什麼需要 varargs
語法,並且我們舉了三個例子來深入理解 varargs
的概念。