Projectiles
是Projectile
的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
您应该阅读多态和诸如接口之类的东西,它们也可能会有用。