Javaの可変長引数

引数の個数を自由に変えたい

生徒
生徒

教授?
Javaでメソッドに渡す引数の個数を自由に変えたいのですが、良い方法はありますか?

教授
教授

それは、可変長引数ですね?
Javaの可変長引数とは、メソッドに渡す引数の個数を柔軟に変えられる機能です。
メソッドの引数の型の直後に「…」(ピリオドを3つ)を付けて宣言します。
次のようになりますよ?

public class Test {
  public static void main(String[] args) {
    // 可変長引数を使ったメソッドを呼び出す
    printSum(1, 2); // 引数が2個
    printSum(3, 4, 5); // 引数が3個
    printSum(6, 7, 8, 9); // 引数が4個
  }

  // 可変長引数を使ったメソッドの定義
  public static void printSum(int... numbers) {
    int sum = 0;
    for (int n : numbers) {
      sum += n;
    }
    System.out.println("合計は" + sum + "です");
  }
}
生徒
生徒

へぇー。
こうなるのですね。

教授
教授

先ほどのコードでは、printSumというメソッドが可変長引数を使って定義されていますよ?
このメソッドは、int型の任意の個数の引数を受け取り、その合計を表示します。
可変長引数は、配列として扱われます。
この場合、numbersという配列に引数が格納されます。
メソッド呼び出し時に渡す引数の個数に応じて、配列の要素数が変わります。
printSum(1, 2)と呼び出した場合、numbersは要素数2の配列になります。
printSum(3, 4, 5)と呼び出した場合、numbersは要素数3の配列になります。

このように、可変長引数を使うと、メソッドに渡す引数の個数を柔軟に変えられます。

可変長引数の注意点

生徒
生徒

可変長引数を使う時の注意点はありますか?

教授
教授

可変長引数は、各メソッドに1つだけ指定できます。
2つ以上の可変長引数を同時に宣言することはできません。
また、可変長引数は、メソッドの最後にしか指定できません。
他の引数よりも前に可変長引数を宣言することはできません。
注意点を守らないと、コンパイルエラーが発生しますよ?

生徒
生徒

なるほど。
浮気しないで自分だけを見て欲しいのですね。

教授
教授

ふむふむ。
君が何人目か、ということは気にしないのですね?

生徒
生徒

ええ、私は相手のスペックに応じて対応しますので。
私のときめきは可変長なのです。

教授
教授

ヤレヤレ。
色々と敵に回しても知りませんよ?

すもものサイバーセキュリティ実験室
公式YouTubeチャンネル

「すもものサイバーセキュリティ実験室」を随時配信中!ぜひチャンネル登録をお願いします。

チャンネルを見る・登録する
Java
スポンサーリンク
フォローをお願いします!