如何在运行时测试一个java类是否扩展了另一个Java类?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (31)
Class<?> a = A.class;
Class<?> b = B.class;
提问于
用户回答回答于
用户回答回答于

如果你想知道Class是否扩展另一个,使用类#isAssignableFrom(类)

if(B.class.isAssignableFrom(A.class)) { ... }

如果对实例是否属于特定类型感兴趣,请使用instanceof:

A obj = new A();
if(obj instanceof B) { ... }

这些将返回true如果类/实例是类型层次结构的成员,并且不受直接超类/子类关系的限制。例如:

// 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

扫码关注云+社区

领取腾讯云代金券