在运行时确定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的答案 )