説明
Javaにおいて、String… と String[] の違いを説明します。
まず、String[] は配列を表します。具体的には、複数のString要素を持つ固定サイズの配列です。String[] に要素を追加するには、配列のサイズを変更する必要があります。
一方、String… は可変長引数を表します。つまり、0個以上のString要素を受け取ることができます。String… は、引数として渡されたString要素を自動的に配列に変換して処理することができます。また、メソッドの呼び出し元が引数を渡さなかった場合には、空の配列が自動的に作成されます。
例
public void printStrings(String... strings) {
for (String s : strings) {
System.out.println(s);
}
}
このメソッドは、0個以上のString要素を引数として受け取り、それらを順番に出力します。このメソッドを呼び出す際には、以下のように引数を指定できます。
printStrings("foo", "bar", "baz"); // "foo", "bar", "baz"が順に出力される
また、以下のように、String[] を引数として渡すこともできます。
String[] strings = {"foo", "bar", "baz"};
printStrings(strings); // "foo", "bar", "baz"が順に出力される
しかし、以下のように、String[] をそのまま引数として渡すことはできません。
printStrings({"foo", "bar", "baz"}); // コンパイルエラーになる
この場合には、以下のように、String[] を配列として展開してから渡す必要があります。
printStrings(new String[]{"foo", "bar", "baz"}); // "foo", "bar", "baz"が順に出力される
コメント