Java の可変個引数のメソッド
可変個引数のメソッドとは?
今、足し算をするメソッド add() というのがあるとしましょう。
この add() メソッドは次の例のように int 型の数値を二つ受け取って、足し算した結果を返すとします。
public static int add(int a, int b) {
return a + b;
}
このメソッドは次のように使えます。1 と 2 を受け取って、3 を返しています。
public class TestApp {
public static void main(String[] args) {
int ans = add(1,2);
System.out.println(ans); // 3
}
public static int add(int a, int b) {
return a + b;
}
}
それでは、もっとたくさんの数値の足し算をするメソッドを定義するにはどうしたらよいでしょうか。
単純に単純にパラメータを増やしていくこともできます。
public static int add(int a, int b, int c) {
return a + b + c;
}
public static int add(int a, int b, int c, int d) {
return a + b + c + d;
}
しかし、これではキリがありません。int の値を、何個でもいいから受け取れる関数が作れないでしょうか。
可変個引数を受け取るメソッドは、このような要望に応えるためのものです。
Java で可変個引数のメソッドを定義する
Java では、コンストラクタを含むメソッドで、引数(パラメータ)の数を可変個とすることができます。
可変個のパラメータを持つメソッドは、3個のドット ... を使って次のように定義します。
戻り値 メソッド名 ( データ型... 変数名 )
呼び出し側はカンマ , で区切って引数を渡すと、 メソッド側では自動的に配列として引数を受け取ることができます。
具体例は次のようになります。
任意個数の int 型の変数を受け取るメソッド add() を定義して、 そのメソッドに引数を 1 から 5 の 5 個の数値を渡して呼び出しています。
public class TestApp {
public static void main(String[] args) {
int ans = add(1, 2, 3, 4, 5);
System.out.println(ans); // 15
}
public static int add(int... a) {
int ans = 0;
for (int i : a) {
ans += i;
}
return ans;
}
}
以上、可変個引数のメソッドの定義の方法と使い方を説明しました。