在 Java 中使用可變引數 (varargs) 時,有哪些規則需要遵守?
從 JSE 1.5 開始,您可以將可變數量的值作為引數傳遞給方法。這些引數被稱為可變引數 (varargs),它們由三個點 (...) 表示。
語法
public myMethod(int ... a) {
// method body
}在 Java 中使用可變引數的規則
- 每個方法只能有一個可變引數。如果您嘗試使用多個可變引數,則會生成編譯時錯誤。
示例
在下面的 Java 示例中,我們嘗試從 sample() 方法接受兩個可變引數。
public class VarargsExample{
void demoMethod(int... ages), String... names) {
for (int arg: ages) {
System.out.println(arg);
}
}
}編譯時錯誤
編譯時,上述程式會生成以下錯誤:
VarargsExample.java:2: error: ')' expected
void demoMethod(int... ages, String... names) {
^
VarargsExample.java:2: error: <identifier> expected
void demoMethod(int... ages, String... names) {
^
VarargsExample.java:2: error: <identifier> expected
void demoMethod(int... ages, String... names) {
^
3 errors- 在方法的引數列表中,可變引數必須是最後一個。否則,將生成編譯時錯誤。
示例
在下面的示例中,VarargsExample 類有一個名為 demoMethod() 的方法,它接受 3 個引數:一個可變引數、一個字串和一個整數。
這裡我們將可變引數放在引數列表的第一個位置。
public class VarargsExample{
void demoMethod(int... marks, String name, int age) {
System.out.println();
System.out.println("Name: "+name);
System.out.println("Age: "+age);
System.out.print("Marks: ");
for (int m: marks) {
System.out.print(m+" ");
}
}
}編譯時錯誤
編譯時,上述程式會生成以下錯誤。
VarargsExample.java:2: error: ')' expected
void demoMethod(int... marks, String name, int age) {
^
VarargsExample.java:2: error: <identifier> expected
void demoMethod(int... marks, String name, int age) {
^
VarargsExample.java:2: error: <identifier> expected
void demoMethod(int... marks, String name, int age) {
^
3 errors如果您在 Eclipse 中編譯相同的程式碼,它會生成一個(相同的)錯誤,提示可變引數應該放在列表的最後,如下所示:

如果您想使此程式執行,則需要將可變引數放在方法引數列表的末尾。
public class VarargsExample{
void demoMethod(String name, int age, int... marks) {
System.out.println();
System.out.println("Name: "+name);
System.out.println("Age: "+age);
System.out.print("Marks: ");
for (int m: marks) {
System.out.print(m+" ");
}
}
public static void main(String args[] ){
VarargsExample obj = new VarargsExample();
obj.demoMethod("Krishna", 23, 90, 95, 80, 69 );
obj.demoMethod("Vishnu", 22, 91, 75, 94 );
obj.demoMethod("Kasyap", 25, 85, 82);
obj.demoMethod("Vani", 25, 93);
}
}輸出
Name: Krishna Age: 23 Marks: 90 95 80 69 Name: Vishnu Age: 22 Marks: 91 75 94 Name: Kasyap Age: 25 Marks: 85 82 Name: Vani Age: 25 Marks: 93
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP