好的,我有一个包含矩形的形状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()
但那没有用..错误:找不到符号
答案 0 :(得分:1)
将对象投射到Rectangle
,而不是Shape
(getX()
已在班级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,这基本上会创建一个自己的副本,但是如果你必须包含其他形状,你实际上没有选择(除了某种逐个案例的转换)。