fvg*_*vgs 2 java methods arraylist instanceof
在这个循环中,我迭代一个类型的ArrayList Entity
,它包含Entity类型的对象以及Projectile类型的对象,它扩展了Entity.如果对象是Projectile的实例,我希望执行下面的代码.但是,该getVelocity()
方法仅在子类Projectile中,而不在Entity中.所以我无法编译下面的代码.
我可以想办法解决这个问题,比如使用单独的ArrayLists.但是,重点是将所有实体保留在全局列表中而不是将它们分开.有这个问题的简单解决方案,还是我需要更改代码的结构?
for (Entity f: glo.getList()) {
if (f instanceof Projectile)
f.setX(f.getVelocity()/rawFPS);
}
Run Code Online (Sandbox Code Playgroud)
这似乎是一个循环,以某种方式更新您的实体游戏引擎的每个滴答.
在我看来,更清洁的解决方案是:
class Entity {
...
public void update() {}
...
}
class Projectile extends Entity {
...
@Override
public void update() {
setX(velocity/rawFPS);
}
...
}
Run Code Online (Sandbox Code Playgroud)
我不知道你的建筑,你可能需要或不需要传递rawFPS
给你update()
.(正如@Naveen非常正确地指出的那样,这不是很干净,所以如果可以,请避免它).此外,如果您Entity
的摘要没有任何功能,请考虑将其作为interface
首选.
归档时间: |
|
查看次数: |
1910 次 |
最近记录: |