首页 > 解决方案 > 如何将此代码转换为我更熟悉的更简单的代码?

问题描述

我目前是 Java 的第一年,在互联网上偶然发现了这个关于战舰游戏的代码。我想做的是用更简单的代码来理解这段代码。让我感到困惑的部分是第一行:“computerGameBoard = new GameBoard(true, event ->”。我熟悉按钮以及它们如何具有动作事件,但是这段代码与那个相比如何,是否有可能把这个进入一个与按钮类似的动作事件?我可以将它拆分成另一种方法吗?提前谢谢。还要注意下面的代码行应该附加到代码段,但不是。

    computerGameBoard = new GameBoard(true, event ->
    {
        if (!playing)
            return;

        BoardSquare boardsquare = (BoardSquare) event.getSource();
        if (boardsquare.wasHit)
            return;

        AIMove = !boardsquare.fire();
         System.out.println("enemyBoard shipcount:"+computerGameBoard.shipcount);
        if (computerGameBoard.shipcount == 0) {
            System.out.println("Winner!");

        }

        if (AIMove)
            AI1();
    });

标签: javaeventsmouseeventactionevent

解决方案


没有 lambda 的 onClickListener() 示例:

mButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // do something here
    }
});

可以用 lambda 重写:

mButton.setOnClickListener((View v) -> {
    // do something here
});

所以您的代码使用 Lambda 表达式(Java 8 功能)


推荐阅读