【发布时间】:2016-02-11 15:40:33
【问题描述】:
我正在尝试用 Java 制作一个小型 2D 游戏/游戏引擎。
作为场景的每种类型的对象都扩展了具有抽象方法“tick()”的“对象”类。此外,还有一个名为“Scene”的类,它有一个包含场景中所有对象的 HashMap。我希望场景调用 HashMap 中每个对象的方法“tick()”(每秒 60 次)。
public class Scene {
private HashMap<String, Object> objs; //HashMap containing all the objects
private void tick() {
for(Entry<String, Object> e : objs.entrySet()) {
Object o = e.value();
o.tick();
}
}
[...]
}
现在我想知道是否有更好、更优雅的方式来实现这一点。也许通过创建一个 EventObject 和 EventListener 或者通过使用 Observable 并使每个对象成为 Observer?
【问题讨论】:
-
你可以做
objs.values().forEach(value -> value.tick()); -
我首先要更改的是对象类的名称。您将不断与标准的、自动导入的 java.lang.Object 类发生冲突。
-
好的,所以您认为使用 for 循环是实现这一目标的最佳/最简单方法?
-
是的,我会这样做...
标签: java