我正在开发Connect4游戏,但没有找到使用以下@FunctionalInterface作为lamdba表达式的方法。这是界面:
public interface PlayerFactory {
Player createPlayer(String name, State color, GameView gameView);
}
Player是另一个接口,用于实现所有播放器类型共有的方法。 以下类用于在地图中为某种类型的播放器插入正确的工厂:
public class PlayerRegistry {
private Map<String, PlayerFactory> registry;
public PlayerRegistry() {
this.registry = new HashMap<String, PlayerFactory>();
initialize();
}
private void initialize() {
this.register("AI", new AIPlayerFactory());
this.register("human", new HumanPlayerFactory());
}
public void register( String name , PlayerFactory playerFactory ) {
this.registry.put(name, playerFactory);
}
public PlayerFactory getPlayer(String playerName) {
return this.registry.get(playerName);
}
}
AIPlayerFactory和HumanPlayerFactory类实现接口PlayerFactory并返回AIPlayer或HumanPlayer类型的新对象。 在以下方法中,我创建了播放器,我想知道是否存在使用lambda表达式的方法。
Player[] player = new Player[2]
private Player[] definePlayer() throws IOException {
player[0] = playerFactory1.createPlayer(gameView.inputName(1), State.CIRCLE, gameView);
player[1] = playerFactory2.createPlayer(gameView.inputName(2), State.CROSS, gameView);
return player;
}
方法inputName(int index)从键盘上获取一个字符串,而gameView是用于处理输入/输出的类。我想在方法 definePlayer()中使用lambda。