可変長引数

Posted by muchag | Java |
初回投稿:2011-04-19 (火) 16:06:52 | 最終更新:2019-11-03 (日) 14:13:36

Flex のときに 関数パラメータ で大いに感動した記憶がある。
当然のように Java にもあった。
J2SE5 から導入されたとのこと。

概要

メソッドの引数が可変長になる。
つまり、引数の数を不定にできる。
 

原形(導入前)

元々は引数を配列にすることで対処していた。


String[] player;
player = {"甲子園", "豆タン"};
mizushimaManga(player):

player = {"山田", "里中", "岩鬼", "殿馬"};
mizushimaManga(player):

player = {"球道"};
mizushimaManga(player):

public void mizushimaManga(String[] player) {

	for (int i = 0; i < player.length; i++) {
		System.out.printIn(player[i]);
	}
}

これなら、引数の数がバラバラでも対処できる。

可変長引数

これを簡略化?したものが 可変長引数


mizushimaManga("甲子園", "豆タン"):
mizushimaManga("山田", "里中", "岩鬼", "殿馬"):
mizushimaManga("球道"):

public void mizushimaManga(String... player) {

	for (int i = 0; i < player.length; i++) {
		System.out.printIn(player[i]);
	}
}

5行目にある String... player の ... の部分が可変長引数の印。

仕様
  • 可変長なので引数の数は 0 でもよい
  • 他にも引数があるときは、最期に記述
  • 1つのメソッドで1種類しか使えない
  • メソッドがオーバーローディングされていて、
    引数が固定のメソッドと可変個のメソッドがマッチした場合、
    前者が優先される

 

可変長なので引数の数は 0 でもよい

mizushimaManga():

public void mizushimaManga(String... player) {

	for (int i = 0; i < player.length; i++) {
		System.out.printIn(player[i]);
	}
}

これでも機能する。
何も起こらないけど・・・。
player は length = 0 なのであって、null ではないことに注意。
 

他にも引数があるときは、最期に記述

mizushimaManga("男どアホウ甲子園", "南波高校", "甲子園", "豆タン"):
mizushimaManga("ドカベン", "明訓高校", "山田", "里中", "岩鬼", "殿馬"):

public void mizushimaManga(String title, String school, String... player) {

	for (int i = 0; i < player.length; i++) {
		System.out.printIn("「" + title + "」" + school + ":"+ player[i]);
	}
}
参考サイト

ひしだまのコンピュータ関連技術メモ:Java 可変長引数
TECHSCORE:6. 可変長引数

Posted by muchag | Java |
初回投稿:2011-04-19 (火) 16:06:52 | 最終更新:2019-11-03 (日) 14:13:36

コメントはまだありません »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment