如何检查泛型类型是否在java中实现了特定类型的泛型接口?
可能的副本:
运行时局部变量的泛型类型
我是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>