0
我需要確定構造函數在泛型方法中在運行時接受多少個參數。我知道每個類型T都擴展了相同的基類,並且它們每個只有一個構造函數,但是它們需要不同數量的參數。如何在java中使用反射來確定泛型類型的構造函數參數的數量?
public T someMethod() {
// get amount of parameters T constructor takes
}
有沒有簡單的方法來實現這個目標?
我需要確定構造函數在泛型方法中在運行時接受多少個參數。我知道每個類型T都擴展了相同的基類,並且它們每個只有一個構造函數,但是它們需要不同數量的參數。如何在java中使用反射來確定泛型類型的構造函數參數的數量?
public T someMethod() {
// get amount of parameters T constructor takes
}
有沒有簡單的方法來實現這個目標?
由於type erasure,沒有辦法從具有該簽名的方法中找出有關T
的任何內容。
如果你改變了方法接受一個型令牌,然後是:
public T someMethod(Class<T> clazz) {
// eg:
Constructor<?>[] constructors = clazz.getConstructors();
// eg:
constructors[i].getParameterTypes();
}
這些信息將不可用在運行時,你不能用'T'作爲構造。你想達到什麼目的?反思很可能是不必要的。 – 4castle
基本上我試圖找出一種方法來創建一個類型T的對象從這個方法返回 – Jacco
我不知道這是一個難的。沒有足夠的信息給出。顯示全班,和_maybe_。 –