Java 可変長引数 備忘録

TNPosted by

最近、「前回ログイン情報を表示する」という開発タスクを振られてまして…
ソースコードを読む機会が増えています。
この開発タスクとは直接関係ないのですが、
メソッドの引数リストの引数の型の後ろに「…」という記述が…

「!?」
「???????」

可変長引数…

やべー、頭からスッポリぬけてました。
ふつーに入門書に書かれているような基本的なことなのに…

なので、毎度のごとく備忘録です。

【可変長引数】
メソッド定義の引数リストにおいて同じ型の引数を複数個渡したいとき引数の型の後ろに「…」を付ける
メソッドを呼び出す側は何個でも同じ型の値を渡せるようになる
可変長引数が使えるのは1回だけ
他の型の引数とともに、指定する場合は最後の引数だけに使用可能

受け取った引数は配列として扱われる
・内部的には「String…」は、「String[]」として扱われる
・一つの配列として渡されたのか、複数の値が渡されたのかJVM側では分からないため実引数を1つの配列として渡したい場合には「Object型」にキャストする

可変長引数を使わずに引数を定義したメソッドと可変用引数を使って定義したメソッドがある場合、可変長引数を使わずに定義したメソッドが優先的に呼び出される

例)void testMethod ( String a, String b) { // こちらが呼び出される
任意の処理
}

void testMethod ( String… a ){ // こちらは呼び出されない
任意の処理
}

下記例の場合は、エラーになる

例)void testMethod ( String[] a ) {
任意の処理
}

void testMethod ( String… a ) {
任意の処理
}

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA