我有很多类,所有这些类都扩展了EntityManagerSystem()类。
即
public class EntityManagerSystem
{
public void init() {}
public void update() {}
public void free() {}
public void reset() {}
}
public class AsteroidManager extends EntityManagerSystem...
public class TeleportManager extends EntityManagerSystem...
and so on.
我想创建一个包含这些类的Array <>(),以便在其中轻松调用init(),update()和free()方法。
声明此数组的最佳方法是什么。我不想声明[]数组,因为这些类的构造函数具有参数,而且我需要能够添加和删除条目的灵活性。
我认为类似Array<>() managerList...
,但是我不确定声明是否正确。
(顺便说一下,我正在使用LibGdx ...)
我看过一些帖子,它们解决了相似个问题,但它们并没有真正提供我需要的答案。
TIA
答案 0 :(得分:0)
您可以列出一个列表
List<EntityManagerSystem> myList = new LinkedList<>();
然后将您的对象添加到其中
myList.add(new AsteroidManager(...));
myList.add(new TeleportManager(...));
或者如果您坚持使用数组,它也可以像这样工作:
EntityManagerSystem[] myThingies = new EntityManagerSystem[]{
new AsteroidManager(...),
new TeleportManager(...)
}
答案 1 :(得分:0)
我不想声明[]数组,因为这些类的构造函数具有参数
构造函数是否具有参数无关紧要。您可以通过指定类型来声明数组,而不是通过指定构造函数来声明数组-这是没有道理的。
另外,我需要能够添加和删除条目的灵活性。
然后,您需要一个诸如ArrayList<EntityManagerSystem>
之类的集合类,而不是[]数组。
答案 2 :(得分:0)
您必须声明所需对象的列表:List<EntityManagerSystem> instances = new ArrayList<>()
。它也可以是静态的。然后您有两个选择:
首先。创建后手动将EntityManagerSystem
的新实例添加到此列表中:
AsteroidManager asteroidManager = new AsteroidManager();
TeleportManager teleportManager = new TeleportManager();
instances.add(asteroidManager);
instances.add(teleportManager);
第二您可以在基类的构造函数中实现:
abstract class EntityManagerSystem {
protected EntityManagerSystem() {
instances.add(this);
}
}