Java 区分构造函数内的子类

Java 区分构造函数内的子类,java,class,constructor,processing,subclass,Java,Class,Constructor,Processing,Subclass,我正在使用java处理API制作一个程序。 我希望能够将对象传递到类构造函数中,并根据对象属于哪个子类而发生不同的事情。我希望通过使用重载构造函数来实现这一点 在这段代码中,Asteroid类检查Projectles arrayList中的每个对象,查看它是否与小行星碰撞 void checkProjectiles() { for (int index=0; index<Projectiles.size (); index++) { if (sq(Proj

我正在使用java处理API制作一个程序。 我希望能够将对象传递到类构造函数中,并根据对象属于哪个子类而发生不同的事情。我希望通过使用重载构造函数来实现这一点

在这段代码中,Asteroid类检查Projectles arrayList中的每个对象,查看它是否与小行星碰撞

      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

        Collision newCollision;
        newCollision = new Collision(Projectiles.get(index), this);
      }
    }
  }

提前感谢

您认为哪个参数可以包含子类型<代码>射弹还是小行星?无论哪种方式,请尝试以下方法:

如果您知道可能的子类型集,那么
instanceof
检查将告诉您给定对象是否是特定类型的实例

object instanceof Type
这将返回一个
布尔值
,它将告诉您
对象
是否是
类型
的实例

但是,为了扩展性,您不应该执行这样的
instanceof
检查来实现您想要的-您应该让所有子类型实现一个方法,该方法执行您想要的操作,并在运行时以多态方式调用该方法,该方法将在正确的类型上调用该方法。这有助于提高可扩展性并减少返工


阅读
有效Java第二版
中的
原则“打开以进行扩展;关闭以进行修改”
谢谢,这听起来似乎适合我的目的。我想区分的是投射物的子类。我之前一直在搞.getClass,你的建议看起来很相似,但有点实际。如果我有足够的代表,我会+1。如果你认为答案是合适的,请接受它,这样它可以帮助理解这是答案。
object instanceof Type