Java - 对于基类集合中的每个派生类

标签 java collections for-loop each

我已经使用 Visual Basic 成功完成了此操作,我只是想知道是否有一种简单的方法可以使用 Java 完成此操作。

我想要一个 For 循环,它将迭代基类集合中的派生类。

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,并从 Collection 中挑选出所有 Partical 类。

我的问题是出现“不兼容类型”错误。我确实意识到它们是不同的类型。

最佳答案

尝试:

 for(GameEntity entity : owner.entities) {
      if(entity instanceof Partical) {
          Partical partical = (Partical) entity;
      }
 }

关于Java - 对于基类集合中的每个派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15315059/

相关文章:

java - 在 ListCellRenderer 中渲染 JList 内容时出现 OutOfMemoryError

java - 如何用Java2D绘制内线

Java延迟帧重画

java - 创建集合的副本

PHP/PDO 如何在 execute(array) 定义中插入 FOR 循环?

bash - 在 Bash 的 for 循环中仅运行一次命令

java - spring shell 2 中的命令颜色

scala - 我一般如何处理 Scala 集合?

java - 为什么无效的 compareTo 不会导致 Collections.sort 崩溃?

C++11 for 循环语法不能正常工作