【发布时间】:2018-03-05 20:19:46
【问题描述】:
public static void main(String[] args)
{
Class b = B.class;
System.out.println(b.isAssignableFrom(A.class));
}
static abstract class A{
}
static class B extends A{
}
输出:
false
输出为假我尝试使用instanceof,但出现编译错误,请帮忙
编辑已解决,您需要比较基类是否可以从扩展的非常愚蠢的分配,您不能使用是类 instanceof abstract 反正
【问题讨论】:
-
这里没有泛型。结果是正确的,您不能从
A分配给B。 -
请阅读文档,即
isAssignableFrom(Class<?> cls)的javadoc,其中声明:“判断此Class对象所代表的类或接口是否相同作为,或者是由指定 Class 参数表示的类或接口的 超类 或超接口”。由于B不是A的超级,方法返回false。 --- idownvotedbecau.se/noresearch -
如果你想要
b instanceof A的等价物,那么反向调用:A.class.isAssignableFrom(b)
标签: java class abstract instanceof