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

在java中确保一个对象从另一个对象继承,java,inheritance,Java,Inheritance,如何知道一个对象是否从另一个对象继承 假设我有一个抽象类A。我如何知道一个对象是否是从A继承的类的实例 boolean inherited = false; for (Class c : instance.getClasses()) { if (c == A.class) { inherited = true; break; } } 这行吗?对于我试图完成的任务来说,这似乎有点沉重。instanceof在这种情况下应该可以很好地工作,但它确实提出

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

假设我有一个抽象类A。我如何知道一个对象是否是从A继承的类的实例

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

这行吗?对于我试图完成的任务来说,这似乎有点沉重。

instanceof
在这种情况下应该可以很好地工作,但它确实提出了一个问题,那就是你为什么要这样做,如果可能有更好的面向对象的解决方案来解决底层问题。

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


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

如果确实要检查继承:

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

ClassUtils
是来自的实用程序类。

工作正常,谢谢!这很奇怪,因为抽象类中的实例是不可能的,但它可以工作。这是检查instanceof而不是继承。i、 e.Instanceof在A实现i时根据接口i检查类A的实例时计算为true。但A不是从i继承的。@Klems:不过,我想知道你为什么认为需要使用它?你用这个来解决什么问题?