我有一个这样的数组列表:
private List<GameObject> gameObjects = new CopyOnWriteArrayList<GameObject>();
GameObject
可以是 3 个类之一:Spaceship
、Beam
和 Asteroid
。它们都很相似,所以我将它们放在一个数组中。然而,宇宙飞船有附加方法 shoot,它在其他线程中每 100 毫秒使用一次(称为 ShootRunnable
)。所以我想只在 Spaceship
上迭代它,因为其他的没有实现拍摄方法。实现这一目标的最佳方法是什么?
for (GameObject ob : gameObjects) {
if (ob instanceof Spaceship) {
ob.shoot();
}
}
我可以使用类似上面的方法对其进行迭代吗?只是使用 Actor 或其他东西?请帮忙。
最佳答案
您所走的道路在技术上是可行的,但一个好的经验法则是,如果您开始使用反射,您可能做错了什么。在这种情况下,最好有两个集合,一个用于所有游戏类型,一个专门用于宇宙飞船。
关于java - 如何只迭代特定类型的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427667/