这个对象是哪个扩展类?

时间:2011-05-23 03:54:59

标签: java object types

假设我有一个User个对象数组,其中每个对象实际上是扩展User的两个类之一。 ComputerUserHumanUser都延伸User

假设我正在遍历列表,并且在我使用它时每个对象都被命名为o

我可以通过这样比较来确定oComputerUser还是HumanUser

if(o.getClass().equals(ComputerUser.class)) {}
else if(o.getClass().equals(HumanUser.class)) {}

2 个答案:

答案 0 :(得分:2)

if (o instanceof ComputerUser)

答案 1 :(得分:2)

您可以使用instanceof运算符:

if (o instanceof ComputerUser) { 
    ...
}

虽然这被认为是面向对象编程的不良使用。另一种方法是利用多态性并定义适合ComputerUser与HumanUser的行为:

abstract class User {

   abstract public void work();

}

class ComputerUser extends User { 

    @Override
    public void work() { 
       ...
       //specific to ComputerUser
    }

}

class HumanUser extends User { 

    @Override
    public void work() { 
       ...
       //specific to HumanUser
    }

}