我如何从形状数组列表中的矩形中获取X()

时间:2014-01-30 22:50:24

标签: java shape

好的,我有一个包含矩形的形状arraylist。我如何从arraylist中获得该矩形的x坐标?

我想我没有说清楚,所以这里是: 所以这是arraylist:

ArrayList<Shape> shapes = new ArrayList<Shape>() ;

创建形状:

Shape rec1 = new Rectangle(100,100,200,200);
shapes.add(rec1);

现在我怎么能得到x坐标?我试过了:

Shape j = (Shape)shapes.get(i);
j.getX() 

但那没有用..错误:找不到符号

2 个答案:

答案 0 :(得分:1)

将对象投射到Rectangle,而不是ShapegetX()已在班级Rectangle中定义,而非在Shape中定义:

Rectangle r = (Rectangle) shapes.get(i);
r.getX();

然而,这可能不是你想要的:如果你有一个Shape的列表,并不是所有的都是Rectangle。在使用之前,您可以检查对象是否为Rectangle

Shape j = (Shape) shapes.get(i);
if (j instanceof Rectangle) {
    ((Rectangle) j).getX();
}

答案 1 :(得分:1)

Shape不一定只有一个x坐标。因此,您可以更改ArrayList,使其类型为Rectangle:

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

或者你可以通过getBounds获得界限:

Shape s = shapes.get(i);
double x = s.getBounds().getX();

对于一个Rectangle,这基本上会创建一个自己的副本,但是如果你必须包含其他形状,你实际上没有选择(除了某种逐个案例的转换)。