型パラメータで示される型の配列を作りたい
generic array creationより。型パラメータで示される型の配列を作りたい場合、普通にnewして作ることはできないのでリフレクションを使って作っていたのだけど、
// aとbの配列を作りたい。 X a = null; X b = null; // これはエラーになるので・・ // X[] array = new X[2]; // リフレクションで作る X[] array = (X[]) Array.newInstance( a.getClass(), 2 ); array[0] = a; array[1] = b;
↓のようなメソッドを作ってやればいいのか。
// 指定された引数の配列を作る。 static <X> X[] toArray( X... args ) { return args; } ・・・・ // こんな感じで使う。 X a = null; X b = null; X[] array = toArray(a,b);
なるほどねー。配列の長さを指定したいとかなると話は違ってくるけど、最初のサンプルのような固定長の要素を値に持つ配列をさくっと作りたい場合には便利そう。ふむふむ。