2017-03-14 44 views
0

我需要確定構造函數在泛型方法中在運行時接受多少個參數。我知道每個類型T都擴展了相同的基類,並且它們每個只有一個構造函數,但是它們需要不同數量的參數。如何在java中使用反射來確定泛型類型的構造函數參數的數量?

public T someMethod() { 
    // get amount of parameters T constructor takes 
} 

有沒有簡單的方法來實現這個目標?

+0

這些信息將不可用在運行時,你不能用'T'作爲構造。你想達到什麼目的?反思很可能是不必要的。 – 4castle

+0

基本上我試圖找出一種方法來創建一個類型T的對象從這個方法返回 – Jacco

+1

我不知道這是一個難的。沒有足夠的信息給出。顯示全班,和_maybe_。 –

回答

2

由於type erasure,沒有辦法從具有該簽名的方法中找出有關T的任何內容。

如果你改變了方法接受一個型令牌,然後是:

public T someMethod(Class<T> clazz) { 
    // eg: 
    Constructor<?>[] constructors = clazz.getConstructors(); 
    // eg: 
    constructors[i].getParameterTypes(); 
} 
相關問題