给定具有以下结构的类。我试图确定泛型方法的调用者分配的参数T的类型。
public class MyClass{
public <T> 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定义。
答案 0 :(得分:4)
你做不到。您可以做的是使方法签名如下:
public boolean isSupportable(Class<?> type)
然后您可以使用给定的类来检查类型。
答案 1 :(得分:1)
你不能,泛型在运行时不可用。如果您有T的实例,则可以随时检查T object
是否是instanceof
的特定类的实例。
这是由于type erasure。
另一种方法是使用Class
类作为参数(请参阅@ ColinD的answer)