为 libGDX 游戏的特定对象覆盖 ArrayList<>

Overriding ArrayList<> for Specific Object for libGDX Game

如果这是一个简单的问题(这是我第一次问这个问题),请放轻松,我仍然是 libGDX 的初学者,正在开发我的第一款游戏。

背景: 我需要在列表中为我正在开发的游戏保留 "Gem" 个对象列表。目前我正在使用 ArrayList,但是我正在使用多个辅助方法。不幸的是,因为我只使用通用的 ArrayList,所以所有这些辅助方法都必须在我的主游戏中 class。

我的问题: 为了让我的代码尽可能干净,有没有办法只为我的 "Gem" 对象覆盖整个 ArrayList class,这样我就可以添加我所有的辅助方法,并且仍然是可以为其他对象使用 Java 定义的 ArrayList<> 吗?或者我是否必须创建一种伪 ArrayList class 类型来实现与 ArrayList 关联的所有方法?这看起来很乏味。

你的问题有点含糊。您想扩展 ArrayList 以便只能放入 class Gem 的实例吗?如果是这样,您可以轻松地这样做:

public class GemList extends ArrayList<Gem> {
 //All your helper methods
}

并像这样使用它:

GemList gemList = new GemList();
gemList.add(new Gem());

问题比较模糊。我不确定您 "Helper methods" 的用途。您可以只扩展 ArrayList 并将您的方法添加到该 class 签名。覆盖由您根据您提供的有限信息自行决定。

public class MyList extends ArrayList<T> { 
    public MyList() { super(); }
}

不过有一个问题。您的辅助方法...这些方法是否像遍历、选择、删除等?如果是这样,我建议你选择不同的数据结构。您可以使用基于 states/variables/position 的树结构来更轻松地导航,基于键的 o(1) 的 HashMaps,能够获取邻居节点的链表等