如何在泛型方法中获取泛型类的类实例

时间:2016-04-03 19:36:00

标签: java generics

我有一个通用的方法,我怎么能得到T的类?

class MyClass
{
    static <T> void foo(T t)
    {
        // how to get T.class
    }
}

t.getClass()获取派生最多的类,但T可能是超类,因此在MyClass的情况下它不起作用。&lt; Collection&gt; foo(new ArrayList())。

1 个答案:

答案 0 :(得分:2)

如果您想保留签名,则无法进行签名。但是,有一种方法可以通过将类型作为单独的参数来解决这个问题。

static <T> void foo(T t, Class<T> cls) {
   // use cls
}

然后而不是调用

MyClass.<Collection> foo(new ArrayList());
你打电话

MyClass.foo(new ArrayList(), Collection.class);