我的代码有问题。我想编写绘制矩形,圆形和从点创建的另一个形状的程序。我想使用Graphics2D,这是我的问题:如何制作所有这些形状的一个ArrayList?它甚至可能吗?我做的是这样的:
List<Shape> shapesArray = new ArrayList<Shape>();
shapesArray.add(new Rectangle2D.Double());
shapesArray.get(0).setFrameFromDiagonal(point_a, point_b)
当我这样做时,我不能使用Rectangle2D方法。
感谢您的帮助
答案 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