Java-用于基类集合中的每个派生类
我已经用VisualBasic成功地做到了这一点,我只想知道是否有一种简单的方法可以用Java实现这一点 我需要一个For循环,该循环将遍历基类集合中的派生类Java-用于基类集合中的每个派生类,java,collections,for-loop,each,Java,Collections,For Loop,Each,我已经用VisualBasic成功地做到了这一点,我只想知道是否有一种简单的方法可以用Java实现这一点 我需要一个For循环,该循环将遍历基类集合中的派生类 public class Game{ private Collection<GameEntity> entities; // Methods would go here to control GameEntity's private abstract class GameEntity{
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
}
}
}
}
}
公共类游戏{
私人收藏实体;
//方法可以在这里控制GameEntity的
私有抽象类GameEntity{
受保护的游戏所有者;//定义游戏拥有此实体的实例
公共游戏实体(游戏所有者){
这个。所有者=所有者;
}
公共摘要无效勾号();
}
私有类particial扩展了GameEntity{
公众参与者(游戏所有者){
超级(业主);
}
公共空白勾号(){
对于(particial p:owner.entities){//这是我的问题
如果(p!=这个){//不要自己做物理
}
}
}
}
}
好的,这里我有一个游戏类,它有一个GameEntity的集合,但是GameEntity是一个严格意义上的基类
Partical派生自GameEntity类
我想要for循环做的是迭代GameEntity的集合,并从集合中挑选出所有的特殊类
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
}
}
}
}
}
我的问题是出现了“不兼容类型”错误。我知道它们是不同的类型。您需要迭代并检查所需的类类型:
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
}
}
}
您需要迭代并检查所需的类类型:
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
}
}
}
尝试:
尝试:
Java有一个类型检查,您可以使用instanceOf来检查某个类型是否是其他超类型的实例,例如:
if(entity instanceOf Partical) {
// do smth
}
Java有一个类型检查,您可以使用instanceOf来检查某个类型是否是其他超类型的实例,例如:
if(entity instanceOf Partical) {
// do smth
}
您知道
instanceof
?您知道instanceof
?