0

ClassJava 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){}
}

このようなことは可能ですか?

4

2 に答える 2

1

このように実行時に決定した Class 変数を使用できるようにしたいのですが、まだ方法がわかりません。

 Class clazz = MyDomainClass.class ... DomainBuilder 
 builder = new  DomainBuilder<clazz>() {}

実際にはこのようにすることはできません。そうすることclass Typeで、対角線で a を定義するのではなく、 type<>のオブジェクトを渡すからです。 claszzClass

于 2013-11-24T21:00:46.887 に答える
1

Classオブジェクトが直接渡される場合は、完全に別のコンストラクターを作成する必要があります。あなたがしようとしている方法でそれを再び推測することはできません。

于 2013-11-24T21:00:56.893 に答える