引数がいくつかあるけれど数が決まっていない時に使える可変長引数について学んでいきたいと思います。
可変長引数とは
可変長と名前がつくことからもわかるように引数の数を自由に決められます。Java SE 5から導入されています。
可変長引数の宣言方法
引数が可変長のみ
void test(int… num){ //code }
int… num と型の後ろに「…」を書くことで可変長を宣言します。変数は「num」1つでint型で宣言していますが複数入ることが想定されるため配列型のように扱われます。
引数が複数
void test(int num1 int… num2){ //code }
可変長引数以外の引数も受け取る場合、可変長引数は最後に書きます。
可変長引数の扱い方
引数から受け取った型は配列として扱われます。
サンプルコード 1つの引数
public class Main {
public static void main(String[] args) {
int num1 = 1, num2 = 2, num3 = 3;
// testメソッドを呼び出し
test(num1, num2, num3);
}
// int型の可変長引数を扱ったtestメソッド
static void test(int… num) {
int total = 0;
for (int a : num) {
total += a;
}
System.out.println(total); // 6
}
}
配列型になっているのが確認できると思います。
サンプルコード 複数の引数
public class Main {
public static void main(String[] args) {
String str = “可変長テスト”;
int num = 10;
int num1 = 1, num2 = 2, num3 = 3;
test(str, num, num1, num2, num3);
}
static void test(String str, int num, int… nums) {
int total = 0;
for (int a : nums) {
total += a;
}
System.out.println(str); // 可変長テスト
System.out.println(num); // 10
System.out.println(total); // 6
}
}