我正在尝试创建Ellipse2D数组,以便稍后可以在paintComponent()中重置它们的位置。这并不是让我在第3行的Ellipse2D下初始化时出错,我在做什么错?

    Ellipse2D[] ellipses = new Ellipse2D[1000];
for(int i = 0; i <= 1000; i++){
    ellipses[i] = new Ellipse2D(2,2,2,2);
}

最佳答案

从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);
}

关于java - 初始化Ellipse2D数组时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32760944/

10-10 23:16