在运行时确定generics方法参数的类型

鉴于具有以下结构的类。 我试图确定generics方法的调用者分配的参数T的类型。

public class MyClass{ public  Boolean IsSupportable() { Class typeOfT; // Need to determine Class for generic parameter T // Business Logic goes here return true; } } 

在C#中,我会使用“default(T)”或“typeof(T)”,但我试图在Java中这样做。 有谁知道我是怎么做的? 我真的不需要实例,我只需要Class定义。

你不能这样做。 你可以做的是使方法签名像这样:

 public boolean isSupportable(Class type) 

然后,您可以使用给定的类来检查类型。

你不能,generics在运行时不可用。 如果你有一个T的实例,你总是可以检查T object是具有instanceof的特定类的instanceof

这是由于类型擦除 。

另一种方法是使用Class类作为参数(参见@ColinD的答案 )