gifnksmの雑多なメモスマートフォン用の表示で見るgifnksmの雑多なメモこの広告は、90日以上更新していないブログに表示しています。2009-07-11JavaのGenericsのめんどいところ?JavaこんなシチュエーションのときJavaのGenericsはめんどくさい。したらもっとうまいやり方があるのかもしれないけど分からなかった。{}こんな感じでインターフェースとそれを実装したクラスがあるとします。リストから指定したクラスのインスタンスだけ取り出したリストを返す。}}そして,Xのリストを保持してるオブジェクトがあって,その中からXを継承したクラスT(この場合はYかZ)だけを取り出したリストを返すメソッドがあると。別のクラスがあって,こんなことがしたい。{}Javaの型パラメータはコンパイル時に用いられるだけで実行時には消えてしまうらしいので,この"xlist.getElementsByClass(T);"がエラーになるのはどうやら仕方がないことらしい。AbstractClassの型パラメータをなくして,コンストラクタにClass型のオブジェクトを渡すってやり方にすれば解決できるんだけど,なぜかその場合でも「AbstractClassに型パラメータを持たせた方が良い」みたいな警告がでてしまった。結果,継承する側は型名を2回書かなければならず,なんかエレガントじゃないのでこの方法は却下。型パラメータで指定されたクラスを取得する。うなの日記を参考にして以下のように書き直した。{}リフレクション用の関数を使えば型パラメータを実行時に取得できるよ!ってことらしい。一応やりたいことは実現できたのだけどなんだかめんどくさいし,あんまり安全じゃなさそう。Class」というコンパイルエラーが出るところ。X」だから問題無さそうなのに。