java - Greenfoot:java.lang.ClassCastException:障碍物无法转换到 BallProjectile

标签 java greenfoot

好吧,当我尝试使 BallProjectile 与障碍物碰撞时,球会停止并产生新的障碍物时,我会收到此错误。

// Checks if the ball is colliding with an obstace, then stops it if it is

BallProjectile obstacleCollision = (BallProjectile) getOneIntersectingObject(Obstacle.class);
        if (obstacleCollision != null)
        {
            xSpeed = 0;
            ySpeed = 0;
            myWorld.addObject(new BallProjectile(), 50, 559);
            return;
        }

如何停止此错误?请注意,障碍就是为了阻挡球而创建的圆圈。

最佳答案

您在提供的代码中进行强制转换的唯一位置是:

BallProjectile obstacleCollision = (BallProjectile) getOneIntersectingObject(Obstacle.class);

所以我认为这就是你的问题所在。似乎这个方法的返回不能转换为 BallProjectile

编辑:

要验证您的碰撞,您可以执行以下任一操作:

Obstacle obstacleCollision = (Obstacle) getOneIntersectingObject(Obstacle.class);
if(obstacleCollision != null) {
   //do your things here
}

Actor obstacleCollision = getOneIntersectingObject(Obstacle.class);
if(obstacleCollision != null) {
   //do your things here
}

两种方法应该以相同的方式工作

关于java - Greenfoot:java.lang.ClassCastException:障碍物无法转换到 BallProjectile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899106/

相关文章:

java - 在 Java 中删除 ArrayList 的最后一个对象

java - 如何使用 CXF 和 X.509 对 SOAP 请求中的特定字段进行加密

java - 我如何检索 Actor 子类的坐标以便将新 Actor 放置在该位置?

java - 为什么我收到 java.lang.ArithmeticException :/by zero?

Java 泛型与类和接口(interface) - 一起

java - 动态配置管理

java - 是否可以检查该类是否具有静态 block (通过反射或其他方式)?

java - 声明了静态数组但方法无法工作

java - 如何从Java中的不同类获取对象的名称

java - 获取有关包含对象的数组的信息 - Java