Java 这个对象是哪个扩展类?
假设我有一个Java 这个对象是哪个扩展类?,java,object,types,Java,Object,Types,假设我有一个User对象数组,其中每个对象实际上是扩展User的两个类中的一个ComputerUser和HumanUser都扩展了User 假设我在列表中迭代,当我使用它时,每个对象都被命名为o 我可以通过如下比较来确定o是ComputerUser还是HumanUser: if(o.getClass().equals(ComputerUser.class)) {} else if(o.getClass().equals(HumanUser.class)) {} 等 etc您可以使用instan
User
对象数组,其中每个对象实际上是扩展User
的两个类中的一个ComputerUser
和HumanUser
都扩展了User
假设我在列表中迭代,当我使用它时,每个对象都被命名为o
我可以通过如下比较来确定o
是ComputerUser
还是HumanUser
:
if(o.getClass().equals(ComputerUser.class)) {}
else if(o.getClass().equals(HumanUser.class)) {}
等
etc您可以使用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
}
}
您可以使用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
}
}
你自己测试不是更容易吗?在我检查之前,代码中的其他错误,我想可能有人会一目了然。你自己测试不是更容易吗?在我检查之前,代码中的其他错误,我想可能有人会一目了然。即使它保存在
用户
的数组中?它不会认为它是用户
?检查对象动态类型的实例,而不是引用它的变量的静态类型。即使它保存在用户
的数组中?它不会认为它是检查对象动态类型的用户
?实例,而不是引用它的变量的静态类型。