Class
Java 7で、手元にあるオブジェクトを使用してジェネリック型で匿名の内部クラスをインスタンス化することは可能ですか?
インスタンス化しようとしているジェネリック クラスの簡略化されたバージョンを次に示します。
abstract class DomainBuilder<E> {
private final Class<E> entityClass
public DomainBuilder() {
this.entityClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
...
}
コンパイル時にビルドしたいクラスを指定するときに匿名の内部クラスを作成すると、うまくいきます。
DomainBuilder builder = new DomainBuilder<MyDomainClass>() {}
このように実行時に決定した変数を使用できるようにしたいのですがClass
、まだ方法がわかりません:
Class clazz = MyDomainClass.class
...
DomainBuilder builder = new DomainBuilder<clazz>() {}
また、運が悪かったので、これらの行に沿ってメソッドを作成しようとしました:
Class clazz = MyDomainClass.class
DomainBuilder builder = builderFor(clazz)
public static DomainBuilder<T> builderFor(Class<T> t) {
return new DomainBuilder<T>(entityManager){}
}
このようなことは可能ですか?