当前位置: 首页 > 面试题库 >

Java-创建方法数组

万阳嘉
2023-03-14
问题内容

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

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

我更愿意做的是在每个节点的开头包含一个方法数组,如下所示:

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

然后将该数组发送到通用方法,然后将播放器发送到正确的节点:

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

我简化了代码,但这是一般的想法。这可能吗?


问题答案:

每当您想到函数指针时,就可以使用Adapter模式(或变体)转换为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();
    }
}


 类似资料:
  • 问题内容: 我在为自己创建的类编写方法时遇到了麻烦。此类旨在在TreeSet中使用,因此,它实现Comparable。该类具有以下变量: 这是该方法的实现。我希望按其成本来组织这些Node结构,因此,返回简单减法的结果。 我还实现了一种方法。 说了这么多,我有几个问题: 由于实施了新方法,因此应该实施新方法吗? 如何使用这些变量实施新的hashCode ?(请注意,Matrix类型的变量矩阵已实现

  • 在数组的属性和方法这一小节中我们学习到了如何查看数组的大小、维数(秩)、元素的数据类型、每个元素的大小等等。这一小节将详述如何从数值范围创建特殊数组,比如指定间隔的等差数列型数组、等比数列型数组等。 1. 创建等间隔序列数组 通常定义一个等间隔序列数组(即等差数组),需要指定某些具体要素,例如起始值、终止值、步长、样本数量等。主要功能类似于 Python 内置的 range 函数,但是返回的是一个

  • 本文向大家介绍Ruby创建数组方法总结,包括了Ruby创建数组方法总结的使用技巧和注意事项,需要的朋友参考一下 程序经常需要管理变量集合。例如,管理日历的程序必须有一周的天数列表。每天必须存储在一个变量中,它们的列表可以存储在一个数组变量中。通过这个数组变量,您可以访问每一天。 创建空数组 您可以通过创建一个新的数组对象并将其存储在一个变量中来创建一个空数组。这个数组将为空;您必须用其他变量填充它

  • 本文向大家介绍使用Java Reflection方法创建数组的新实例,包括了使用Java Reflection方法创建数组的新实例的使用技巧和注意事项,需要的朋友参考一下 可以使用java.lang.reflect.Array.newInstance()方法创建Array的新实例。此方法基本上会创建一个具有所需组件类型和长度的新数组。 给出了一个演示使用Array.newInstance()方法创

  • 问题内容: 我目前有一种方法可以检查3x3网格中中心项周围的内容,如果8个相邻位置中的内容包含我要检查的内容,我想在长度为7的数组上将该正方形标记为1。 为此,我需要在我的方法中创建并返回一个数组,这可能吗? 问题答案: 不知道是什么问题。你是这个意思?

  • 我知道Stack Overflow上有无数的HeapSort方法,但是没有一个方法一定能帮助我完成我正在做的事情。 我有点想法什么是堆,我只是不知道如何获取这些值并将它们分类以将它们存储到数组中。 因此,我的指令如下:静态堆排序(Comparable[],int)方法应该对数组执行“就地”排序(从最低值到最高值)。第二个参数指示数组中填充元素的数量。若要“将 [数组] 本身视为最大堆”,此方法可以