java - 如何将此代码转换为我更熟悉的更简单的代码?
问题描述
我目前是 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();
});
解决方案
没有 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 功能)
推荐阅读
- python - 尝试调用类时出现错误
- powershell - 使用不同的父文件夹 CSV 创建多个子文件夹 - Powershell
- vue.js - vue-test-utils 如何测试组件状态
- sql-server-2016 - SQL Server 不能添加、删除、添加列?
- math - 公式中的数学问题,寻找直接的数学函数
- javascript - 如何访问 onloadedmetadata 提供的对象?
- c++ - 对列表向量调用 clear() 会清除列表中每个索引处的所有节点吗?
- unity3d - 如何获得墙壁物理的正确 2D 弹跳球?而且它也适用于低fps?
- c# - LINQ 内部 WHERE - 内部集合不包含字符串
- java - 带有 RecyclerView 和 CardView 的 java.lang.NullPointerException