可能重复:
运行时局部变量的泛型类型
我是 Java 泛型的新手,来自 .NET 世界,我习惯于编写这样的方法:
public void genericMethod<T>(T genericObject)
{
if (genericObject is IList<String>)
{
//Do something...
}
}
该方法接受泛型类型的对象,并检查该对象是否实现了泛型接口的特定IList<>
版本,在本例中为IList<String>
。
现在,在 Java 中,我可以做到这一点:
public <T> void genericMethod(T genericObject)
{
if (genericObject instanceof Set<?>)
{
//Do something...
}
}
但
Java不让我做if (genericObject instanceof Set<String>)
据我所知,由于类型擦除,通常在 Java 中,这将由类对象处理,我们将执行以下操作:
public <T> void genericMethod(T genericObject)
{
Class<OurTestingType> testClass = OurTestingType.class;
if (genericObject.getClass() == testClass)
{
//Do something...
}
}
但由于我要检查的类型是通用接口,所以你不能这样做:
Class<Set<String>> testClass = Set<String>.class
那么,如何在 Java 中检查泛型对象是否实现了特定类型的Set<String>
?