Java 如何用多态性替换instanceof关键字?
如何用多态性替换instanceof?Wumpus、Gold和Pit的共同点是什么? 假设机器人/怪物对这种类型的细胞感兴趣 因此,请定义一个接口:Java 如何用多态性替换instanceof关键字?,java,Java,如何用多态性替换instanceof?Wumpus、Gold和Pit的共同点是什么? 假设机器人/怪物对这种类型的细胞感兴趣 因此,请定义一个接口: while (Board[randRow][randColumn] instanceof Wumpus || Board[randRow][randColumn] instanceof Gold || Board[randRow][randColumn] instanceof Pit) 并将其应用于
while (Board[randRow][randColumn] instanceof Wumpus || Board[randRow][randColumn] instanceof Gold
|| Board[randRow][randColumn] instanceof Pit)
并将其应用于Wumpus、Gold和Pit:
使用:
public class Gold implements Cell{
@Override public boolean isInterestedForMonster(){
return true;
}
}
这就是用多态性替换“instanceof”的方法取决于您想用它做什么。您可以调用在公共基类中定义的方法,例如Board[randRow][randColumn].foo,其中foo在公共接口或抽象超类中是抽象的,并在每个子类中实现。如果您对检查具体类型感兴趣,只需将此检查作为单独的方法添加,并在每个子类中重写它们。因为这些检查是您业务逻辑的一部分
public class Gold implements Cell{
@Override public boolean isInterestedForMonster(){
return true;
}
}
Cell cell = Board[randRow][randColumn];
while(cell.isInterestedForMonster()){
//Do something
}