如何测试一个java类是否在运行时扩展另一个类?
答
你是否在寻找:
Super.class.isAssignableFrom(Sub.class)
答
如果你想知道是否不Class
扩展了另一个,使用Class#isAssignableFrom(Class)。对于你的榜样,那就是:
if(B.class.isAssignableFrom(A.class)) { ... }
如果你有兴趣在一个实例是否是特定类型的,使用instanceof
:
A obj = new A();
if(obj instanceof B) { ... }
注意,这些将返回true
如果class/instance是类型层次结构的成员,并不限制直接指定超类/子类关系。例如:
// if A.class extends B.class, and B.class extends C.class
C.class.isAssignableFrom(A.class); // evaluates to true
// ...and...
new A() instanceof C; // evaluates to true
如果您要检查直接超类/子类的关系,Tim has provided an answer为好。
感谢您的回答! – trusktr 2013-10-05 23:48:48