サーチ…


備考

"varargs"メソッドの引数は、そのメソッドの呼び出し側が指定された型の複数の引数をそれぞれ別の引数として指定できるようにします。メソッド宣言では、基本型の後に3つのASCIIピリオド( ... )を指定します。

メソッド自体は、それらの引数を単一の配列として受け取ります。要素の型はvarargs引数の型です。配列は自動的に作成されます(ただし、複数の値を別々のメソッド引数として渡すのではなく、呼び出し側で明示的な配列を渡すことはできます)。

変数の規則:

  1. Varargsは最後の引数でなければなりません。
  2. メソッドには1つのVarargsしか存在できません。

上記の規則に従う必要があります。そうしないと、プログラムによってコンパイルエラーが発生します。

varargsパラメータの指定

void doSomething(String... strings) {
    for (String s : strings) {
        System.out.println(s);
    }
}

最後のパラメータの型の後の3つのピリオドは、最後の引数が配列または一連の引数として渡されることを示します。 Varargsは最後の引数の位置でのみ使用できます。

Varargsパラメータの操作

varargsをメソッド定義のパラメータとして使用すると、配列または引数のシーケンスのいずれかを渡すことができます。引数のシーケンスが渡されると、それらは自動的に配列に変換されます。

この例は、 printVarArgArray()メソッドに渡される配列と引数のシーケンスと、メソッド内のコード内で同じように扱われる方法を示しています。

public class VarArgs {
    
    // this method will print the entire contents of the parameter passed in
    
    void printVarArgArray(int... x) {
        for (int i = 0; i < x.length; i++) {
            System.out.print(x[i] + ",");
        }
    }
    
    public static void main(String args[]) {
        VarArgs obj = new VarArgs();
        
        //Using an array:
        int[] testArray = new int[]{10, 20};
        obj.printVarArgArray(testArray); 
       
        System.out.println(" ");
        
        //Using a sequence of arguments
        obj.printVarArgArray(5, 6, 5, 8, 6, 31);
    }
}

出力:

10,20, 
5,6,5,8,6,31

このようなメソッドを定義すると、コンパイル時にエラーが発生します。

void method(String... a, int... b , int c){} //Compile time error (multiple varargs )

void method(int... a, String b){} //Compile time error (varargs must be the last argument 


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow