首页 > 解决方案 > Java varargs 构造函数在子类构造函数中给出错误

问题描述

我有 2 个课程:FinishButtonChangeSpeedButton. FinishButton是父类,但它来自不同的包,它是另一个类的子类。它有 2 个构造函数:

public class FinishButton extends Button {

    public FinishButton(Point...points) {
        super(Response.SLOW,Type.HOLD,points);
    }
    public FinishButton() {
        this(new Point(width-75,height-75),
                new Point(width-75,height-15),
                new Point(width-15,height-15),
                new Point(width-15,height-75));
    }

    public void function() {
        nextPanel();
    }

    public void draw(Graphics g) {
        super.draw(g);
        this.xpoints[0] = 0;
        g.setColor(Defaults.GRAPHIC_COLOR);
        int[] xPoints = { 
                width-45-(int)((20*Math.sqrt(3))/2),
                width-45-(int)((20*Math.sqrt(3))/2),
                width-45+(int)((20*Math.sqrt(3))/2)
        },
                yPoints = {
                height-65,height-25,height-45
        };
        int nPoints = 3;
        g.fillPolygon(xPoints, yPoints, nPoints);
    }

}

这些课程正在进行中,但ChangeSpeedButton看起来像这样:

public class ChangeSpeedButton extends FinishButton {

    public ChangeSpeedButton() {
        super(new Point(width/2-30,height-75),
                new Point(width/2-30,height-15),
                new Point(width/2+30,height-15),
                new Point(width/2+30,height-75));
    }

}

奇怪的是,FinishButton当重载自己的构造函数时,它完美地处理了可变参数,但由于某种原因,在ChangeSpeedButton's 的构造函数上,Eclipse告诉我

“删除参数以匹配'FinishButton()'”或“更改构造函数'FinishButton()':添加参数'Point,Point,Point,Point'”。

有谁知道为什么它给我一个错误ChangeSpeedButton

编辑:我添加了完整的课程。根据要求,这是Point课程:

public class Point {

    private double x,y;

    public double getX() { return x; }
    public double getY() { return y; }

    public Point() {
        this(0,0);
    }
    public Point(double x,double y) {
        this.x = x;
        this.y = y;
    }

    public String toString() {
        return "Point: ("+x+", "+y+")";
    }

}

也许这与 Button 类是嵌套类这一事实有关?

标签: javaconstructorsubclassvariadic-functionssuperclass

解决方案


哦,我的天啊。我太笨了 我打开了 2 个 FinishButton 文件,即使我用正确的更改保存了其中一个文件,但 ChangeSpeedButton 只查看了过时的文件。


推荐阅读