有什么方法可以在 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?
不,没有。至少......不是我认为你的意思。
理论上,您可以使用“字节码操作”技巧在编译后注入额外的构造函数,但在这种情况下这将是错误的解决方案。
我目前正在完成我的任务,但我被卡住了。任务是根据这个 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?
不,没有。至少......不是我认为你的意思。
理论上,您可以使用“字节码操作”技巧在编译后注入额外的构造函数,但在这种情况下这将是错误的解决方案。