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) –