我已经使用Visual Basic成功完成了这项工作,我只是想知道是否有一种简单的方法可以用Java来完成。
我想要一个For循环,它将从Base类Collection迭代Derived类。
public class Game{
private Collection<GameEntity> entities;
// Methods would go here to control GameEntity's
private abstract class GameEntity{
protected Game owner; //Defines which instance Game owns this Entity
public GameEntity(Game owner) {
this.owner=owner;
}
public abstract void tick();
}
private class Partical extends GameEntity{
public Partical(Game owner) {
super(owner);
}
public void tick(){
for (Partical p : owner.entities) { //HERE IS MY PROBLEM
if(p != this){ //Don't do physics with itself
}
}
}
}
}
好吧,所以我在这里有我的Game类,它有一个GameEntity的集合,但GameEntity是一个严格的基类。
Partical源自GameEntity类。
我想要for循环做的是迭代GameEntity的集合并从Collection中挑选出所有Partical类。
我的问题出在哪里,我收到“不兼容的类型”错误。我确实认识到它们是不同的类型。
答案 0 :(得分:1)
你需要迭代&amp;检查所需的类类型:
for (GameEntity e : owner.entities) { //HERE IS MY PROBLEM
if (e instanceof Partical) {
Partical p = (Partical)e;
if(p != this){ //Don't do physics with itself
}
}
}
答案 1 :(得分:1)
尝试:
for(GameEntity entity : owner.entities) {
if(entity instanceof Partical) {
Partical partical = (Partical) entity;
}
}
答案 2 :(得分:1)
Java有一个类型检查,你可以使用instanceOf检查一个类型是否是某个其他超类型的实例,例如:
if(entity instanceOf Partical) {
// do smth
}