Javaで事前にメソッドの引数の数を設定したくない場合に使うことができるのが可変長引数です。
今回の記事では可変長引数について解説していきます。
可変長引数とは
可変長引数というのは引数の数が決まっていない時に、使うことができます。
可変長引数を使うことで呼び出す際に同じ型の値であれば好きな数だけ設定することが可能になります。
可変長引数が宣言されたメソッド側では配列として使うことができます。
可変長引数の書き方
可変長引数を宣言する際には型の後ろに「...」とピリオド3つをつけることがで宣言することができます。
例) void method(String... args) {}
可変長引数を持ったメソッドを呼び出す際には次のようにカンマ区切りで引数を指定します。
例1) method()
例2) method("aaa")
例3) method("aaa", "bbb")
例4) method("aaa", "bbb", "ccc")
可変長引数を使う際の注意点としては「各メソッドに一つだけ」「メソッドの最後にしか指定することができない」ということです。
つまり次のような宣言はすることができません。
例1) void method(String... strArgs, int... intArgs) {} // エラー
例2) void method(String... strArgs, int num1) {} // エラー
可変長引数を使ったサンプルプログラム
では実際に可変長引数を使ったサンプルプログラムを確認してみましょう。
public class VariableLengthArgument {
public static void main(String[] args) {
method();
System.out.println();
method("aaa");
System.out.println();
method("aaa", "bbb");
System.out.println();
method("aaa", "bbb", "ccc");
System.out.println();
// 配列を渡すことも可能
String[] strArgs = {"aaa", "bbb", "ccc", "ddd"};
method(strArgs);
}
private static void method(String... args) {
// 引数argsの長さを出力
System.out.println("引数の個数:" + args.length);
// 引数argsの中身を一つずつ出力する
for (String arg: args) {
System.out.println(arg);
}
}
}
実行結果
引数の個数:0
引数の個数:1
aaa
引数の個数:2
aaa
bbb
引数の個数:3
aaa
bbb
ccc
引数の個数:4
aaa
bbb
サンプルプログラムの解説
サンプルプログラムの解説をしていきます。
まずstaticなmethodを宣言しています。
このmethodに可変長引数としてargsを設定します。
private static void method(String... args) {
可変長引数はメソッド内では配列として扱われるため、長さを取得することが可能です。
// 引数argsの長さを出力
System.out.println("引数の個数:" + args.length);
for文を使って可変長引数で受け取った値から要素を一つずつ取り出して出力しています。
// 引数argsの中身を一つずつ出力する
for (String arg: args) {
System.out.println(arg);
}
以上可変長引数について解説しました。