2016-10-03 58 views
-7
 while (Board[randRow][randColumn] instanceof Wumpus || Board[randRow][randColumn] instanceof Gold 
       || Board[randRow][randColumn] instanceof Pit) 

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

+2

取决于你想用它做什么。您可以调用在通用基类中定义的方法,例如'Board [randRow] [randColumn] .foo()',其中'foo()'在一个通用接口或抽象超类中是抽象的,并在每个子类中实现。 – Andy

+0

如果您想检查具体类型,只需将此检查作为单独的方法添加并在每个子类中覆盖它们即可。因为这些检查是您业务逻辑的一部分 – maks

回答

2

什么是WumpusGoldPit? 可以说,僵尸/怪物对这种类型的细胞感兴趣。

所以定义一个接口:

public interface Cell{ 
    boolean isInterestedForMonster(); 
} 

并执行它为WumpusGoldPit

public class Gold implements Cell{ 
    @Override public boolean isInterestedForMonster(){ 
     return true; 
    } 
} 

使用:

Cell cell = Board[randRow][randColumn]; 
while(cell.isInterestedForMonster()){ 
    //Do something 
} 

这就是你如何更换“的instanceof '具有多态性

相关问题