Java - 创建方法数组

2023-12-24

我正在为学校进步设计一款基于文本的冒险游戏。我将每个“级别”设置为一个类,并将每个可探索区域(节点)设置为相应类中的方法。

让我困惑的是从一个节点移动到另一个节点的代码。由于每个节点最多连接到四个其他节点,因此我必须在每个方法中重复极其相似的代码块。

我更喜欢做的是在每个节点的开头包含一系列方法,如下所示:

public static void zero()
{
    ... adjacentNodes[] = {one(), two(), three(), four()};
}

然后将该数组发送到通用方法,并将玩家发送到正确的节点:

public static void move(...[] adjacentNodes, int index)
{
    adjacentNodes[index];
}

我简化了我的代码,但这就是总体思路。这可能吗?


每当您想到函数指针时,您都会使用适配器模式(或其变体)将其转换为 Java。它会是这样的:

public class Node {
    ...
    public void goNorth() { ... }
    public void goSouth() { ... }
    public void goEast() { ... }
    public void goWest() { ... }

    interface MoveAction {
        void move();
    }

    private MoveAction[] moveActions = new MoveAction[] {
        new MoveAction() { public void move() { goNorth(); } },
        new MoveAction() { public void move() { goSouth(); } },
        new MoveAction() { public void move() { goEast(); } },
        new MoveAction() { public void move() { goWest(); } },
    };

    public void move(int index) {
        moveActions[index].move();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java - 创建方法数组 的相关文章

  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • Java 泛型/类型调度问题

    考虑以下程序 import java util List import java util ArrayList public class TypeTest public static class TypeTestA extends Type
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • Java 变量的作用域

    我不明白为什么这段代码的输出是10 package uno public class A int x 10 A int x 12 new B public static void main String args int x 11 new
  • 服务器到 Firebase HTTP POST 结果为响应消息 200

    使用 Java 代码 向下滚动查看 我使用 FCM 向我的 Android 发送通知消息 当提供正确的服务器密钥令牌时 我收到如下所示的响应消息 之后从 FCM 收到以下响应消息 Response 200 Success Message m
  • pq:函数unnest(未知)不是唯一的

    以下代码工作正常 但我想将 array a b c d e 定义为变量 rows err db Query select colname from SELECT date unnest array a b c d e AS colname
  • 为什么我在 Mac 上看到“java.lang.reflect.InaccessibleObjectException: Unable to make private java.nio.DirectByteBuffer(long,int)accessibl

    我已经在工作中愉快地构建代码好几天了 但突然我的一个项目 不是全部 失败并出现此错误消息 看看下面的答案吧 我是如何修复它的 起初我用谷歌搜索 看到很多有这个问题的人正在使用 Java 16 但我认为 错误 我正在使用 Java 11 因为
  • 如何按值删除数组中的多个项目?

    我正在尝试做一个removeAll 函数 它将删除具有该特定值 而不是索引 的数组的所有元素 当我们对循环进行任何更改时 棘手的部分就出现了 索引往往会移动 使其很难像我们想要的那样工作 并且每次更改时都重新启动循环 这在大数组上效率非常低
  • 尝试在没有 GatewayIntent 的情况下访问消息内容

    我希望每当我写一条打招呼的消息时 机器人都会在控制台中响应一条消息 但它只是给我一个错误 JDA MainWS ReadThread WARN JDA Attempting to access message content without
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • OpenJDK 版本控制

    上下文 我想确保我们系统上安装的 Java 不受 CVE 2022 21449 的影响 java version 给出 openjdk version 11 0 7 2020 04 14 LTS OpenJDK Runtime Enviro
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • Java 编码风格、局部变量与重复方法调用

    我更喜欢使用局部变量而不是多次调用同一方法 I prefer this Vehicle vehicle person getVehicle if vehicle instanceof Car Car car Car vehicle car
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 文件上传在 jQuery UI 对话框中不起作用

    所以我有一个相当奇怪的问题 我想看看是否有人有一些见解 我有一个页面 其中显示已上传到我们服务器的文件网格 网格工具栏使他们能够上传更多文件 当他们单击工具栏上的 添加文件 按钮时 会出现一个 jQuery UI 对话框模式窗口 其中包含一
  • 在C++中,如何将一个字符串拆分为多个整数? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个由
  • Makefile:英特尔 fortran、文件夹中的源文件和英特尔数学核心函数库

    我在文件夹 ex 中有一个 main f90 f77 子程序文件位于 ex src 中 子程序文件再次使用 BLAS 和 LAPACK 库 对于 BLAS 和 LAPACK 我必须使用 Intel Math Kernel Library I
  • 获取 Facebook 页面选项卡上的用户位置

    可口可乐似乎在这方面做得很好 即使在任何用户交互之前 他们也会设法知道您所在的位置 这适用于 IE 因此不涉及 HTML5 毕竟 Facebook 不会识别navigatorJavaScript 中的对象 他们如何做到这一点 首先 我不认为
  • Sonarqube 未注册任何 C# 问题

    大概类似于这个问题 https stackoverflow com questions 36401757 sonarqube is not registering any c sharp issues 但由于之前的版本已经回答了这个问题 所
  • 匹配多个正则表达式组并删除它们

    我收到了一个文件 我想从中提取有用的数据 文件的格式如下 LINE 1 TOKENKIND somedata TOKENKIND somedata LINE 2 TOKENKIND somedata LINE 3 etc 我想做的是删除 L
  • Tkinter 框架调整大小

    我已经被困了几天 试图弄清楚如何使用这种方法动态调整 TKInter 中的框架大小 class SampleApp tk Tk def init self args kwargs tk Tk init self args kwargs th
  • printf 函数如何处理 %f 规范?

    我有几个程序的输出我无法理解 方案1 include
  • 如何在没有部署描述符的情况下在Spring中注册监听器

    我正在通过 Spring Framework 4 1 0 慢慢步入 Java 世界 需要您在监听器方面的帮助 我创建了没有部署描述符的应用程序 所有与 Spring 相关的配置都在中管理 Configuration带注释的类 一切正常 但我
  • 在多阶段编译中,我们是否应该使用标准的序列化方法来通过阶段传送对象?

    这个问题是在 Scala 3 Dotty 中提出的 但应该推广到 MetaML 系列之外的任何语言 Scala 3 宏教程 https docs scala lang org scala3 reference metaprogramming
  • 如何从 SilverLight 打开 TCP 套接字?

    我需要知道如何从 Silverlight 打开 TCP 套接字连接 它是如何完成的 快速的谷歌搜索提供了这个网站 Silverlight 2 和 System Net Sockets Socket http weblogs asp net
  • Java 代理发现机器人

    我编写了一个类 ProxyFinder 它连接到随机 ip 并首先对它们执行 ping 操作 如果它们响应 则尝试通过公共代理端口创建 http 代理连接 目前 它设置为仅连接到随机 ip 这是相对较快的 每小时发现几个代理 但是 我想以某
  • 将项目从 firebase 加载到 pickerview 时出现问题

    我已经成功创建了一个 QuestionModel 类 它从 firebase 检索项目 例如问题 答案字符串和正确的问题 然而 我现在很难让这些项目从另一个班级进入选择器视图 名为 QuestionsViewController 的类是我在
  • 在 SQL Server 中使用 OPTION(MAXDOP 1) 的目的是什么?

    我一直没有清楚地理解其用法MAXDOP 我确实知道它使查询速度更快 并且它是我可以用于查询优化的最后一项 然而 我的问题是 它最适合在何时何地在查询中使用 正如卡博因提到的 MAXDOP n 实际上控制查询处理器中正在使用的 CPU 核心的
  • 无法访问电子应用程序中 asar 存档内的文件

    电子版本 1 2 操作系统 Windows 无法使用 readFileSync 访问 asar 存档内的文件 var fs require fs var SQL require sql js var filebuffer fs readFi
  • iphone 在应用程序购买中“无法连接到 iTunes Store”[重复]

    这个问题在这里已经有答案了 可能的重复 iPhone Store Kit 无法连接到 iTunes Store https stackoverflow com questions 2359739 iphone store kit canno
  • 根据属性值过滤 Jackson 的 JsonNode 元素

    我正在使用 Jackson 的 JsonNode 解析 json 我的 json 结构如下所示 让其为变量 rawJson
  • PHP mcrypt_crypt 到 .NET

    我几乎失去了头发 失去了理智 失去了一切 我一直在尝试将此 PHP 函数转换为 C function encrypt decrypt action string output false key My strong secret key i
  • Spark 中的 DataFilter 与 PushedFilter?

    b w DataFilter 与 PushedFilter 有什么区别 当不使用分区过滤器时 如果发生谓词下推 我希望过滤器转到 PushedFilter 这正如预期的那样发生 我还发现DataFilter在物理计划中 我想知道什么是Dat
  • Java - 创建方法数组

    我正在为学校进步设计一款基于文本的冒险游戏 我将每个 级别 设置为一个类 并将每个可探索区域 节点 设置为相应类中的方法 让我困惑的是从一个节点移动到另一个节点的代码 由于每个节点最多连接到四个其他节点 因此我必须在每个方法中重复极其相似的