首页 > 解决方案 > 检查一个对象类是否是另一个类的子类,但使用泛型

问题描述

Stack Overflow 上有很多类似的问题,但我没有发现任何与泛型有关的问题

abstract class A<T> {
    public abstract T getT();
    public void someMethod(Object value){
        if(A.class.isAssignableFrom(value.getClass())
            // either B or C work, as expected
        if(A<Long>.isAssignableFrom(value.getClass()) // does not compile
            // this should allow classes like B only
    }
}
class B extends A<Long>{
    long id;
    @Override
    public Long getT(){return id;}
}
class C extends A<Integer>{
    int id;
    @Override
    public Integer getT(){return id;}
}

我需要的是一种在使用某种方法时区分B和C的方法,如第二个if所示

标签: javaclassgenericsreflection

解决方案


推荐阅读