如何知道对象是否从另一个对象继承?
假设我有一个抽象类A.我怎么知道一个对象是否是从A继承的类的实例?
boolean inherited = false;
for (Class c : instance.getClasses()) {
if (c == A.class) {
inherited = true;
break;
}
}
这有用吗?对于我正在努力实现的目标,这似乎有点沉重。
答案 0 :(得分:4)
instanceof
应该适用于这种情况,但它确实提出了为什么你试图以这种方式做事的问题,如果可能有更好的 OOP 解决方案潜在的问题。
答案 1 :(得分:2)
instanceof
抽象类也必须是instanceof
某个扩展该抽象类的类。您不能实例化抽象类,但可以实例化扩展它的类的对象。
您可能还有助于意识到您创建的任何对象都是instanceof Object
。这是因为Object
位于可实例化类的子类关系层次结构的顶部。
答案 2 :(得分:1)
如果你真的想检查继承:
ClassUtils.getAllSuperclasses(c.getClass()).contains(A.class);
ClassUtils
是来自Apache Commons Lang的实用工具类。