)を引数として渡してそのクラスのインスタンスを返却してくれるとファクトリを書いてみました。そのファクトリを通して一度生成しているインスタンスについては同じものを返してくれるとメモリの節約にもなってよいですね。いうわけで、早速ソースとテストコードです説明とりあえず、クラスがないと説明しにくいのでテスト用に以下のような階層のクラスを作ってあります。ここで、Aのインスタンスを取得するためのファクトリの使い方は以下のようになります。factory.getOrCreate(A.class);#getOrCreateメソッドに型トークン(Class<A>)を渡すことにより、Aのインスタンスを取得できています。呼び出した場合は同じインスタンスが取得されます。同じインスタンスもちろん、型トークンを変えれば違う型のインスタンスも取得できます。factory.getOrCreate(C.class);ただし、Factory<T>はジェネリックなクラスとし、Tという型パラメータで指定されたクラスのサブクラスのみ生成可能となるよう制限をかけています。T>としてありますので、Tのサブクラスの型トークンのみを引数として取れる、という風になっています。昔、Java1.4の頃、これと同様のことをやりたくて、ファクトリクラスには生成する必要があるクラス分だけ、getterメソッドを作った記憶があります...今となってはいい思い出です。.}おわりにJavaのジェネリックは理解して使うとコードもすっきりと整理できるし、そのクラスを利用する側も負担が減り、みんなが幸せになれる素晴らしいモノですね!これからも活用してゆきたいと思います。»プロフィールid:fumokmm新しいNPNLです。(2)はてなブログをはじめよう!fumokmmさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。