考慮下面的Java代碼:使用Java Reflections來查找Collection的元素類型?
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;
}
首先,在開始與名爲「測試」,我遞歸搜索所有領域的類,它被標註了「MyAnnotation」和它的類型是從公司的Java的。 lang.Collection」。對於給定的例子,結果將是:
- Test.foo1.bar.list
- Test.foo2.bar.list
這是obviosly明確的,即第一個只能拿字符串的元素,而第二個只能採取整數。
我的問題是:什麼是最好的(最簡單的)的方式來找到「MyAnnotation」和註釋所有收藏領域的告訴自己的元素類型?
找到類型爲java.lang.Collection的註釋字段不是問題。但是對於給定的例子,我們怎麼能得到如下的結果呢?
- Test.foo1.bar.list <字符串>
- Test.foo2.bar.list <整數>
我試過幾種方法,它總是給我的 '對象' 爲集合的元素類型而不是「String」。
我真的堅持這一點。 非常感謝提前!
您是否試過[this](http://stackoverflow.com/a/1942680/1321716)? –
相關:http://stackoverflow.com/questions/3450505/java-generics-reflection-generic-field-type-of-subclass – assylias
@MattiasBuelens您鏈接的主題處理不同類型的問題。 – theV0ID