1. ホーム
  2. java

[解決済み] 汎用型Tのクラスインスタンスを取得する方法を教えてください。

2022-03-18 07:07:29

質問

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

を使って回避する方法は何が望ましいですか? T.class ?

解決方法は?

簡単に言うと、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
    }
}