如何在java中比较基类的派生对象?

如何在java中比较基类的派生对象?,java,class,oop,polymorphism,Java,Class,Oop,Polymorphism,我有一个基类和两个派生自基类的类,即Derived1和Derived2,我想检查对象的类型是Derived1还是Derived2 这是我的代码: public class Base { int ID; } public class Derived1 extends Base { int subID; } public class Derived2 extends Base { int subID; } public class Program(){ publ

我有一个基类和两个派生自基类的类,即Derived1和Derived2,我想检查对象的类型是Derived1还是Derived2

这是我的代码:

public class Base {
    int ID;
}

public class Derived1 extends Base {
    int subID;
}

public class Derived2 extends Base {
    int subID;
}

public class Program(){
    public static void main(String []args) {
        Base object = new Derived1();

        // I want to check whether "object" is of type Derived1 or Derived2
    }
}

object.getClass()==Derived1.class
将返回true。与派生的对象实例1的
一样
object.getClass().getName()
将返回
“com.foo.Derived1”
<代码>Derived1=(Derived1)对象要么工作,要么抛出
ClassCastException


这是您的主要3个选项。

如果您试图根据对象的状态更改功能,您可能需要考虑让子类通过在基类中声明的抽象方法上使用
@覆盖来处理该功能。工作起来很有魅力!谢谢!顺便说一句,他们中有谁的效率比其他人高还是所有人的效率都一样?他们都是平等的。