ProjectilesProjectile的arrayList。
有几个Projectile的子类,例如Laser
在这里,我试图传递一个弹丸到另一个功能。

  void checkProjectiles() {

    for (int index=0; index<Projectiles.size (); index++) {
      if (sq(Projectiles.get(index).xPos - posX) + sq(Projectiles.get(index).yPos - posY) < sq(size)) { //if within the a circle radius of size from centre of roid
        Projectile checkProjectile = Projectiles.get(index);
        collision(checkProjectile);
      }
    }
  }


我的问题是,当将Laser的实例传递到此函数中时,而不是转到collision(Laser laser)时,它将转到collision(Projectile projectile)
我如何使对象作为其特定子类的实例传递?

最佳答案

您遇到的问题是,就程序而言,射弹中的所有内容都只能解析为射弹,而不能解析为其任何子类。有几种方法可以解决此问题,但是我认为最简单的方法是在碰撞中进行处理。预期将交给一个Projectile类型的对象,并使用instanceof方法在方法内将其拆分。

有关类类型的比较运算符的示例,请参见此答案。
Check if an object belongs to a class in Java

您应该阅读多态和诸如接口之类的东西,它们也可能会有用。

10-06 13:16