2016-04-18 12 views
0

クラスのジェネリックパラメータの名前を取得したいと思います。たとえば :私は文字列「ソリューションを持ってする方法を持っていると思いJavaリフレクション、ジェネリッククラスパラメータの名前を取得

A<Solution> var = new A<Solution>(); 

:で

public class A<B> { 
... 
} 

このクラス私はクラスB.同様の名前を希望「あなたが任意のアイデアを持っている場合は、どこか

の方法で私はここ:)

ありがとうございました!

答えて

3

あなたは、コンストラクタのパラメータとしてClassインスタンスに渡す必要があります:

class A<B> { 
    private final Class<B> clazz; 

    A(Class<B> clazz) { 
    this.clazz = clazz; 
    } 

    String getName() { 
    return clazz.getSimpleName(); 
    } 
} 

A<Solution> var = new A<>(Solution.class); 
+0

ます。また 'A'をサブクラス化することでそれを得ることができます。例については、Guavaの「TypeToken」またはJacksonの「TypeReference」を参照してください。 – shmosel

+0

@shmoselこれは、 'B'が一般的である必要がある場合には適切な解決策になります。別の答えとしてそれを追加することを検討しますか? –

+0

あなたは明示的な型、例えば 'new A (){}'のどちらかを持つ必要があります。特に、複数の型パラメータを取得する必要がある場合は、ちょっとだけ洗練されています。 – shmosel

関連する問題