测试类的泛型参数本身是否与具有其自己的泛型参数的同一类

时间:2014-08-09 20:13:39

标签: java generics instanceof

我不确定我是否正确地表达了标题,但希望我的伪代码几乎是自我解释的。我不知道如何测试SomeType对象是否是MyClass(或后代)的实例。怎么能实现这一目标?

public class MyClass<SomeType>
{
    //...
    public void a(SomeType st)
    {
        if (SomeType extendsOrIs MyClass<?>) // Need help with this line
        {
            MyClass<?> mc = (MyClass<?>) st;
            mc.b();
        }
    }
    public void b()
    {
        //...
    }
}

我发现的一个解决方案是执行此操作,但对象可能为空,在这种情况下,我仍然想知道SomeType是否等同于{ {1}}为了调用未来对象的方法:

MyClass<?>

1 个答案:

答案 0 :(得分:0)

null的第一个不是任何类的实例。您可以在MyClass中创建最终方法,例如: -

public class MyClass<SomeType>
{
    //...
    public void a(SomeType st)
    {
        if (SomeType extendsOrIs MyClass<?>) // Need help with this line
        {
            MyClass<?> mc = (MyClass<?>) st;
            mc.b();
        }
    }
   public final boolean isSubClass()
   {    
     if(this.getClass()!=MyClass.class){
     return true;
     }
    return false;
   }

public void a(SomeType st)
    {
        if (st instanceof MyClass<?>)
        {
            MyClass<?> mc = (MyClass<?>) st;
            mc.isSubClass();
        }
    }