Java 如何用多态性替换instanceof关键字?

Java 如何用多态性替换instanceof关键字?,java,Java,如何用多态性替换instanceof?Wumpus、Gold和Pit的共同点是什么? 假设机器人/怪物对这种类型的细胞感兴趣 因此,请定义一个接口: while (Board[randRow][randColumn] instanceof Wumpus || Board[randRow][randColumn] instanceof Gold || Board[randRow][randColumn] instanceof Pit) 并将其应用于

如何用多态性替换instanceof?

Wumpus、Gold和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
}