2011-06-09 26 views
0

继承我怎么知道,如果一个对象从另一个对象继承?保障对象从另一个在java中

比方说,我有一个抽象类A.我如何知道如果对象是从A继承的类的实例?

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

这是行得通吗?对于我想要完成的事情来说,这似乎有点沉重。

回答

4

instanceof对于这种情况应该可以正常工作,但它确实会问你为什么要这样做,或许有更好的解决方案来解决潜在的问题。

+0

它工作正常,谢谢!这很奇怪,因为来自抽象类的实例是不可能的,但是,它工作。 – Klems 2011-06-09 23:52:05

+0

那么,这是检查instanceof不是为了继承。不过,我想知道为什么你认为你需要使用这样的:即INSTANCEOF检查A类的实例时对我当A实现的。但是,A不从一个 – 2011-06-10 00:17:44

+0

@Klems继承的接口计算结果为真?你用这个来解决什么问题? – 2011-06-10 00:32:09

2

一种instanceof一个抽象类也必须是一个instanceof一些类,其延伸的是抽象类。您不能实例化抽象类,但可以实例化扩展它的类的对象。

它也可以帮助认识到你所创建的任何对象是instanceof Object。这是因为Object位于可实例化类的子类关系层次结构的顶部。

1

如果你真的想检查继承:

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

ClassUtilsApache Commons Lang一个实用程序类。

相关问题