ジェネリック型Tのクラスインスタンスを取得するにはどうすればいいですか? 質問する

ジェネリック型Tのクラスインスタンスを取得するにはどうすればいいですか? 質問する

ジェネリック クラス がありますFoo<T>。 の メソッドでFoo、 型のクラス インスタンスを取得したいのですTが、 を呼び出すことができませんT.class

これを回避するには、どのような方法が好ましいでしょうかT.class?

ベストアンサー1

簡単に答えると、Javaではジェネリック型パラメータのランタイム型を調べる方法はありません。Javaチュートリアル詳細については。

Classこれに対する一般的な解決策は、ジェネリック型のコンストラクタに型パラメータを渡すことです。例:

class Foo<T> {
    final Class<T> typeParameterClass;

    public Foo(Class<T> typeParameterClass) {
        this.typeParameterClass = typeParameterClass;
    }

    public void bar() {
        // you can access the typeParameterClass here and do whatever you like
    }
}

おすすめ記事