假设我有一个User
个对象数组,其中每个对象实际上是扩展User
的两个类之一。 ComputerUser
和HumanUser
都延伸User
。
假设我正在遍历列表,并且在我使用它时每个对象都被命名为o
。
我可以通过这样比较来确定o
是ComputerUser
还是HumanUser
:
if(o.getClass().equals(ComputerUser.class)) {}
else if(o.getClass().equals(HumanUser.class)) {}
答案 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
}
}