形状数组列表

ArrayList of Shapes

我的代码有问题。我想编写程序来绘制矩形、圆形和另一种由点创建的形状。我想使用 Graphics2D,这是我的问题:How to make one ArrayList of all this shapes?有可能吗?我做了这样的事情:

List<Shape> shapesArray = new ArrayList<Shape>();
shapesArray.add(new Rectangle2D.Double());
shapesArray.get(0).setFrameFromDiagonal(point_a, point_b)


当我那样做时,我不能使用 Rectangle2D 方法。

感谢帮助

你肯定可以这样做:

List<Shape> shapesArray = new ArrayList<Shape>();
shapesArray.add(new Rectangle2D.Double());
shapesArray.get(0).setFrameFromDiagonal(point_a, point_b)

但要调用特定的 class 方法,需要强制转换... 要确定列表中的形状是否可以投射,您需要检查实例

喜欢:

if(shapesArray.get(0) instanceof Rectangle2D){
      ((Rectangle2D)shapesArray.get(0)).setFrameFromDiagonal(point_a, point_b)
}

是的,你可以做到。您唯一缺少的是在使用它之前对原始对象进行检查和强制转换。这是一些代码:

if(shapesArray.get(0) instanceof Rectangle2D)
 Rectangle2D rectangle = (Rectangle2D) shapesArray.get(0);
// Use methods and do other checks