2011-05-26 23 views
1

請原諒我提出這樣一個問題,但過去幾年我一直在做C#,直到最近,所以我對Java中的類型擦除泛型與C#中泛型的直覺版本相比有點生疏。Java反射無論如何比較類<?>或類型到類<T>?

我有像這樣的情況:

public void doSomething(Class<T> classType) { 
    for (Method method : classType.getMethods()) { 
    for (Class<?> parameterClass : method.getParameterTypes()) { 
     // How do I compare parameterClass to classType or to String.class? 
    } 
    } 
} 

由於parameterClass是Class則不明類別類型因此它不能在運行時確定的?他們是否存在一種方式來執行這種比較?我再次提醒,我多年來沒有使用Java泛型,而且我一直在閱讀它,並且仍然感到困惑。

回答

1

嘗試使用method.getGenericParameterTypes()代替非通用getParameterTypes()

+0

哦,等等 - 你只需要比較類型; 'getGenericParameterTypes()'是當你真的想確定類型參數時,假設它是可用的。 – 2011-05-26 12:40:47

+0

這將返回Type實現的數組。爲什麼這是一個更好的主意? – 2011-05-26 12:42:22

+0

這是我困惑的地方,你怎麼能比較類型還不能確定類型參數? – 2011-05-26 12:43:33

相關問題