次のJavaコードについて考えてみます。
public class Test
{
private Foo< String, String > foo1;
private Foo< Integer, Integer > foo2;
}
public class Foo< T, V >
{
private Bar< V > bar;
private T a;
}
public class Bar< T >
{
@MyAnnotation
private List< T > list;
}
まず、「Test」という名前のクラスから始めて、「MyAnnotation」で注釈が付けられ、タイプが「java.lang.Collection」から派生しているすべてのフィールドを再帰的に検索します。与えられた例では、結果は次のようになります。
- Test.foo1.bar.list
- Test.foo2.bar.list
最初の要素はその要素の文字列のみを取得できるのに対し、2番目の要素は整数のみを取得できることは明らかです。
私の質問は次のとおりです。「MyAnnotation」で注釈が付けられたすべてのコレクションフィールドを見つけて、それらの要素タイプを伝えるための最良の(最も簡単な)方法は何ですか?
タイプjava.lang.Collectionから注釈付きフィールドを見つけることは問題ではありません。しかし、どのようにして、与えられた例に対して次のような結果を得ることができますか?
- Test.foo1.bar.list<文字列>
- Test.foo2.bar.list<整数>
私はいくつかのアプローチを試しましたが、コレクションの要素タイプとして「String」ではなく「Object」が常に表示されていました。
私は本当にこれに固執しています。よろしくお願いします!