如何在Java中检查一个泛型类型是否实现了特定类型的泛型接口?

10 浏览
0 Comments

如何在Java中检查一个泛型类型是否实现了特定类型的泛型接口?

可能重复:

运行时本地变量的通用类型

我对Java泛型很陌生,来自.NET世界的我习惯了编写这样的方法:

public void genericMethod(T genericObject)
{
    if (genericObject is IList)
    {
        //做一些操作...
    }            
}

该方法接受一个泛型类型的对象,并检查该对象是否实现了特定版本的通用接口IList<>,在这种情况下是IList

现在,在Java中,我可以这样做:

public  void genericMethod(T genericObject)
{
    if (genericObject instanceof Set)
    {
       //做一些操作...
    }
}

但是

Java不允许我这样做if (genericObject instanceof Set)

据我所知,由于类型擦除,通常在Java中这将由一个类对象处理,我们将执行以下操作:

public  void genericMethod(T genericObject)
{
    Class testClass = OurTestingType.class;
    if (genericObject.getClass() == testClass)
    {
       //做一些操作...
    }
}

但是由于我要检查的类型是一个通用接口,所以无法这样做:

Class> testClass = Set.class

那么,在Java中,我如何检查一个泛型对象是否实现了特定类型的Set

0