我正在尝试创建一个Ellipse2D数组,以便稍后我可以在paintComponent()中重置它们的位置。它不是让我在第3行的Ellipse2D下初始化错误。我做错了什么?
Ellipse2D[] ellipses = new Ellipse2D[1000];
for(int i = 0; i <= 1000; i++){
ellipses[i] = new Ellipse2D(2,2,2,2);
}
答案 0 :(得分:1)
来自Java document:
公共抽象类Ellipse2D扩展RectangularShape
Ellipse2D类描述了由框架定义的椭圆 矩形。
此类仅是存储的所有对象的抽象超类 2D椭圆。坐标的实际存储表示是 留给子类。
以下构造函数定义:
protected Ellipse2D()这是一个不能的抽象类 直接实例化。
上述文档清楚地表明无法启动Ellipse2D类。抽象类意味着由其他类扩展。它基本上包含了一堆共享相同属性和方法的其他子类的公共属性和方法需求。
对于Ellipse2D,它包含两个嵌套的子类(嵌套意味着子类在Ellipse2D本身内定义),它们是Ellipse2D.Double和Ellipse2D.Float。您可以启动其中任何一个,如果您愿意将它分配给Ellipse2D,如下所示:
Ellipse2D[] ellipses = new Ellipse2D[1000];
for(int i = 0; i < 1000; i++){
ellipses[i] = new Ellipse2D.Float(2,2,2,2);
}