具有Rectangles的ArrayList将作为Object传递

时间:2017-05-29 22:30:09

标签: java object

您好我在控制台中收到错误:

no suitable method found for intersects(Object)
            if((EnemyBarrels.get(i).getHitBox()).intersects(buildG.getStepD().get(i))){
                                                ^
method RectangularShape.intersects(Rectangle2D) is not applicable
  (argument mismatch; Object cannot be converted to Rectangle2D)
method Rectangle.intersects(Rectangle) is not applicable
  (argument mismatch; Object cannot be converted to Rectangle)

我不明白发生了什么,因为getStepD返回一个ArrayList。

以下是代码:

EnemyBarrels包含多个对象。

 for(int i = 0; i < EnemyBarrels.size(); i++){
            EnemyBarrels.get(i).move();
            if((EnemyBarrels.get(i).getHitBox()).intersects(buildG.getStepD().get(i))){
 }

这是getHitBox():

public Rectangle getHitBox(){
    return hitbox;}

这是hitbox:

Rectangle hitbox = new Rectangle(BarrX,BarrY,25,21);

BarrX和BarrY在其中。

这是getStepD():

public ArrayList getStepD(){
    return stepD;
}

这是stepD:

ArrayList<Rectangle> stepD = new ArrayList<Rectangle>();

其中包含矩形。

任何帮助将不胜感激! 感谢

1 个答案:

答案 0 :(得分:4)

您在getStepD方法中返回一个ArrayList,因为您没有指定ArrayList在方法中包含哪些类型的对象。 Java假定您正在返回对象的ArrayList。您可以将方法更改为此

public ArrayList<Rectangle> getStepD(){
    return stepD;
}