1
我有一個泛型方法,我怎麼才能得到T類?如何在泛型方法中獲得泛型類的類實例
class MyClass
{
static <T> void foo(T t)
{
// how to get T.class
}
}
t.getClass()得到最多的派生類,但T可能是一個超類,所以它在MyClass的情況下不起作用。 <Collection> foo(new ArrayList())。
這是不可能的。閱讀關於類型擦除。您可以做的最好的方法是添加另一個參數'Class clazz'。 –
在這種情況下'T'是編譯時的'Object',所以'Object.class'完成了這個任務。否則,'t.getClass()'怎麼樣?附:不要讓任何人告訴你這與刪除有關,它不會;你還沒有爲'T'定義任何界限。 –
'''T'''是_weak_類型,但是'''getClass()''返回_strong_類型的類。看到[這個問題](http://stackoverflow.com/questions/106336/how-do-i-find-out-what-type-each-object-is-in-a-arraylistobject) –