と思っていたのですが、どうやら可変引数というらしい
JavaのWiki引用
可変引数とは †
Java は,もともと,メソッド(およびコンストラクタ)の 多重定義 (overload, WikiPedia.ja:多重定義) の機能があり, 様々なパターンの引数のメソッド(およびコンストラクタ)を定義することができた。 たとえば
int add(int x) { ... } int add(int x, int y) { ... } int add(int x, int y, int z) { ... }
しかし多重定義では,引数のパターン(シグネチャ)ごとに定義を記述しなければならず, 任意の個数の引数に対応するメソッドを定義できなかった。
JDK 5 から Java 言語に可変引数という機能が導入され, 任意個数の引数を受け取れるメソッド(およびコンストラクタ)を定義できるようになった。 これは C 言語の可変引数 (varargs) や Lisp 言語の残余引数 (&rest) 機能に相当する。 可変引数のメソッドは次のように記述する。
int add(int x, int y, int... zs) { ... }
最後の int... zs が残余引数である。残余引数は最後の引数として(かつその場合に限り)宣言できる。 残余引数は,メソッド内では配列としてアクセスできる。 そのため残余引数は,均一な型でなければならない。
Cでの書き方はたぶん<stdarg.h>ってライブラリの中のマクロを使ってるんだと思うんだけど、
まだ試していない。
今度機会があったら使ってみようかと思う
0 件のコメント:
コメントを投稿