• 締切済み

総称型からインスタンスの生成を行いたいです。

総称型からインスタンスの生成を行いたいです。 はじめまして。 総称型からインスタンスの生成を行う方法を調査しています。 C#での開発経験がありますが、そちらでは構文としてコンストラクタ制約が存在しましたが、 Javaにはそれが無いようで、コンパイルすら通せず悶々と調査をしていますが、Java自体はじめて触れるため非常に効率が悪いです…。 どのような手段でも構いませんので、総称型からのインスタンス生成に関するヒントをいただきたいです。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.1

Java の Generics では型パラメータはコンパイル時までしか存在せず、実行時には無くなっています。また、パラメータ化されたクラス・メソッドでも、コンパイラは一つのクラス・メソッドしか生成しません。 以上のことから、型パラメータからインスタンスを生成することは出来ません。 詳しくは下記のページの「コンストラクションの遅れ」の章を見て下さい。 http://www.ibm.com/developerworks/jp/java/library/j-jtp01255/#2.0 このページにも書いて有りますが、生成したいクラスの java.lang.Class<T> オブジェクトを受取って、リフレクションを使うぐらいしか手がないかも知れません。 例) ----------------------------------- public class GenericsSample { public static void main(String[] args) throws Exception { System.out.println(hoge(Date.class)); } public static <T> T hoge(Class<T> clazz) throws Exception { // パラメータ無しのコンストラクタを持っていない場合は実行時エラー return clazz.getConstructor().newInstance(); } } ---------------------------------------

参考URL:
http://www.javainthebox.net/laboratory/J2SE1.5/LangSpec/Generics/Generics.html

関連するQ&A