确保对象在java中从另一个继承

时间:2011-06-09 23:41:40

标签: java inheritance

如何知道对象是否从另一个对象继承?

假设我有一个抽象类A.我怎么知道一个对象是否是从A继承的类的实例?

boolean inherited = false;
for (Class c : instance.getClasses()) {
    if (c == A.class) {
        inherited = true;
        break;
    }
}

这有用吗?对于我正在努力实现的目标,这似乎有点沉重。

3 个答案:

答案 0 :(得分:4)

instanceof应该适用于这种情况,但它确实提出了为什么你试图以这种方式做事的问题,如果可能有更好的 OOP 解决方案潜在的问题。

答案 1 :(得分:2)

instanceof抽象类也必须是instanceof某个扩展该抽象类的类。您不能实例化抽象类,但可以实例化扩展它的类的对象。

您可能还有助于意识到您创建的任何对象都是instanceof Object。这是因为Object位于可实例化类的子类关系层次结构的顶部。

答案 2 :(得分:1)

如果你真的想检查继承:

ClassUtils.getAllSuperclasses(c.getClass()).contains(A.class);

ClassUtils是来自Apache Commons Lang的实用工具类。