有什么方法可以在 Java 中操作构造函数吗?

Is there any way to manipulate a constructor in Java?

我目前正在完成我的任务,但我被卡住了。任务是根据这个 diagram. In that diagram, as you can see, there is no behavior for creating constructors, but in the given Main Class 创建一个程序。有没有一种方法可以在不更改给定 Main Class 并且除了给定图表之外不创建新方法的情况下创建程序。该程序是计算密度。帮助:)

这是我的盒子class代码:

class Box {
    private double width;
    private double height;
    private double depth;
    private double mass;
    private double density;


    public void setWidth(double width){
        this.width = width;
    }

    public void setHeight(double height){
        this.height = height;
    }

    public void setDepth(double depth){
        this.depth = depth;
    }

    public void setMass(double mass){
        this.mass = mass;
    }

    public double getDensity(){
        density = mass / (width * height * depth);
        return density;
    }
}

你得到的 Main class 只有在 Box 方法有一个 Box(double, double, double) 构造函数时才有效。

所以你必须加一个。

与 UML 片段的明显矛盾很容易解释。 UML class 图经常不显示构造函数。我的猜测是创建该图表的人不想用多余的细节使它混乱。

但事情是这样的。不管图表怎么说,你的 Box class 不能 使用那个 Main class 除非 Box class 提供 main 方法将要使用的构造函数。


回答标题中的问题

Is there any way to manipulate a constructor in Java?

不,没有。至少......不是我认为你的意思。

理论上,您可以使用“字节码操作”技巧在编译后注入额外的构造函数,但在这种情况下这将是错误的解决方案。