java - 如何只迭代特定类型的元素?

标签 java oop

我有一个这样的数组列表:

private List<GameObject> gameObjects = new CopyOnWriteArrayList<GameObject>();

GameObject 可以是 3 个类之一:SpaceshipBeamAsteroid。它们都很相似,所以我将它们放在一个数组中。然而,宇宙飞船有附加方法 shoot,它在其他线程中每 100 毫秒使用一次(称为 ShootRunnable)。所以我想只在 Spaceship 上迭代它,因为其他的没有实现拍摄方法。实现这一目标的最佳方法是什么?

for (GameObject ob : gameObjects) {
  if (ob instanceof Spaceship) {
    ob.shoot();
  }
}

我可以使用类似上面的方法对其进行迭代吗?只是使用 Actor 或其他东西?请帮忙。

最佳答案

您所走的道路在技术上是可行的,但一个好的经验法则是,如果您开始使用反射,您可能做错了什么。在这种情况下,最好有两个集合,一个用于所有游戏类型,一个专门用于宇宙飞船。

关于java - 如何只迭代特定类型的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14427667/

相关文章:

c++指向类的指针数组,初始化为空指针

java - 带有扩展对象的 ArrayList ClassCastException

java - 为什么在Java中调用抛出RuntimeException的方法而不处理异常时程序不会终止?

java - 我应该为 Amazon Web Services 学习什么类型的程序或示例?

java - 一个函数应该属于两个类中的一个/两个还是独立的?

c++ - C++ 类 std::numeric_limits 中的字段与方法

java - 使用曼哈顿距离计算多点之间的最短路径

java - GlobalExceptionHandler 始终返回 500

JavaScript 原型(prototype)函数在构造对象中不可用

javascript - 面向对象的 Javascript 如何用于 DOM 操作