我有一个通用方法,如何获得T类?
class MyClass
{
static <T> void foo(T t)
{
// how to get T.class
}
}
t.getClass()获得最多的派生类,但是T可能是超类,因此在MyClass。<Collection> foo(new ArrayList())的情况下不起作用。
如果您想保留自己的签名,那是不可能的。但是,有一种方法可以通过将类型作为单独的参数来解决。
static <T> void foo(T t, Class<T> cls) {
// use cls
}
然后,而不是调用
MyClass.<Collection> foo(new ArrayList());
你打电话
MyClass.foo(new ArrayList(), Collection.class);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句