用Java检查实例的类

时间:2012-12-02 20:19:39

标签: java oop

如何查看班级是否覆盖其他班级?

例如:假设bobBot,这是一个覆盖抽象类Unit的类。如何使以下评估为真?

bob.getClass() == Unit.class

2 个答案:

答案 0 :(得分:7)

使用instanceof运算符:

if(bob instanceof Unit) {
    // ...
}

请注意,一旦您确定某个对象是使用instanceof的类的实例,您就可以安全地将其强制转换为该类:

if(bob instanceof Unit) {
    Unit bobUnit = (Unit) bob;
    bobUnit.unitMethod();
}

当调用只有子类(例如Unit)具有定义的函数时,这可能是必要的。

答案 1 :(得分:1)

如果实施

Bob implements Unit 

然后

bob.getClass().getSuperclass() 

将返回Unit