形状的ArrayList

时间:2016-04-20 20:53:47

标签: java arrays arraylist graphics2d

我的代码有问题。我想编写绘制矩形,圆形和从点创建的另一个形状的程序。我想使用Graphics2D,这是我的问题:如何制作所有这些形状的一个ArrayList?它甚至可能吗?我做的是这样的:

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


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

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

你可以肯定这样做:

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

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

像:

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

答案 1 :(得分:0)

是的,你可以这样做。您唯一缺少的是对原始对象进行检查和强制转换,然后才能使用它。这是一些代码:

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