Java-如何通过此功能接口使用Lambda表达式

时间:2019-07-17 12:31:42

标签: java lambda functional-interface

我正在开发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。

0 个答案:

没有答案