- - PR -
ジェネリック型の配列を生成するには
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-08-05 11:29
こんにちは
ジェネリッククラスの配列をインスタンス化出来ず悩んでいます。 やりたいことは class Sample<T> { protected Sample<T>[] child = null; public create_child_array( int size ) { child = new Sample<T>[size]; // <<== ERROR } } のようなことなんですが child = new Sample<T>[size]; // <<== ERROR この行で、 cannnot create generic array と言うエラーが発生してしまいます。 少し調べてみたところ java.util.ArrayList<E> の内部では E[] newValue = (E[])new Object[newSize]; のようなことをやっていたので、まねをして child = (Sample<T>[])new Object[10]; とやったら、今度は実行時に TypeCast Exception が発生してしまいました。 このようなことをやるにはどうすればいいのでしょう? 開発環境は JDK5.0_04 + Eclipse3.1 です。 宜しくお願い致します。 | ||||||||
|
投稿日時: 2005-08-05 12:26
>child = new Sample<T>[size]; // <<== ERROR
言語仕様でできないようになっています。 ArrayList などで代用するのが無難ではないでしょうか。 | ||||||||
|
投稿日時: 2005-08-05 17:15
みかさんがやりたいことは、
ではなく、
ではないですか? | ||||||||
|
投稿日時: 2005-08-05 17:29
ご返信ありがとうございます。
>びしばし様 >ArrayList などで代用するのが無難ではないでしょうか。 たしかに、そうするのが無難だと思うのですが、 ただ、メモリ的にかなりシビアなので、出来るだけその辺削りたいんで^^; >まーちん様 >child = new T[size]; いえ、 class Sample<T> { protected Sample<T>[] child = null; protected int id = INVALID; T data = null; public create_child_array( int size ) { child = new Sample<T>[size]; // <<== ERROR } } のようなクラスを定義し これを Sample<String> strSample = new Sample<String>(); Sample<Integer> intSample = new Sample<Integer>(); 等として、インスタンスを生成したいのです。 (Sample<T> 型のツリー構造のようなイメージです) |
1