我有一个通用的方法,我怎么能得到T的类?
class MyClass
{
static <T> void foo(T t)
{
// how to get T.class
}
}
t.getClass()获取派生最多的类,但T可能是超类,因此在MyClass的情况下它不起作用。&lt; Collection&gt; foo(new ArrayList())。
答案 0 :(得分:2)
如果您想保留签名,则无法进行签名。但是,有一种方法可以通过将类型作为单独的参数来解决这个问题。
static <T> void foo(T t, Class<T> cls) {
// use cls
}
然后而不是调用
MyClass.<Collection> foo(new ArrayList());
你打电话
MyClass.foo(new ArrayList(), Collection.class);