在java中确保一个对象从另一个对象继承
如何知道一个对象是否从另一个对象继承 假设我有一个抽象类A。我如何知道一个对象是否是从A继承的类的实例在java中确保一个对象从另一个对象继承,java,inheritance,Java,Inheritance,如何知道一个对象是否从另一个对象继承 假设我有一个抽象类A。我如何知道一个对象是否是从A继承的类的实例 boolean inherited = false; for (Class c : instance.getClasses()) { if (c == A.class) { inherited = true; break; } } 这行吗?对于我试图完成的任务来说,这似乎有点沉重。instanceof在这种情况下应该可以很好地工作,但它确实提出
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:不过,我想知道你为什么认为需要使用它?你用这个来解决什么问题?