我有两个从Player继承的类:SimplePlayer和InterleavedPlayer。
B类具有以下方法:setPlayer(SimplePlayer播放器)和setPlayer(InterleavedPlayer播放器)
A类具有一个Player字段,该字段被设计为SimplePlayer或InterleavedPlayer。类A希望在这些播放器上调用B.setPlayer(),而不必考虑对象是Player的哪个子类。
为了避免在通用的B.setPlayer(Player player)方法中使用instanceof,我为子类重载了B.setPlayer()。
但是在A调用B.setPlayer()时,出现一个未找到符号错误,该错误指向B.setPlayer(Player)。
我应该在这里使用哪种设计方法来解决问题? (A实际上是创建了玩家,所以理论上它“知道”它传递给B的东西。但是,由于A不加区别地对待它的玩家的方式,似乎只有让玩家向其填充东西才有意义,而不必区分SimplePlayer和InterleavedPlayer)。
最佳答案
在A中有重载的方法:
private Player;
public void setPlayer(SimplePlager player) {
this.player = player;
b.setPlayer(player);
}
// similar for InterleavedPlayer
或者,如果调用来自构造函数内部,则也可以重载。
关于java - 通过重载的mutator避免instanceof,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18264769/