class Formulas{
private double x=0, y=0, z=0, t=0, theta=0, v=0, a=0;
}
假设我有一个类似于上面的类,并希望为给定字段的所有可能组合重载构造函数。有没有更快的方法来使用Eclipse生成所有必需的构造函数?
答案 0 :(得分:6)
考虑两种可能的构造函数:
public Formulas(double x);
public Formulas(double theta);
他们有相同的签名所以最终编译器无法区分它们,所以这是非法的。
简短的回答是无法做到。请考虑使用Builder或Factory模式。
你也可以“分而治之”。我不确定你的v和a是什么,但是,如果它们是与theta相关的角度值,你可以使用Point3D和Angle3D类来保存6个输入,并有一个构造函数
public Formulas(Point3D point, Angle3D angle)
答案 1 :(得分:3)
更清晰,更易读,Builder Pattern。
对于"快速方式",请查看Automatically create builder for class in Eclipse。
public class Formulas {
private double x=0, y=0, z=0, t=0, theta=0, v=0, a=0;
public Formulas() {
}
public Formulas withX(double x) {
this.x = x;
return this;
}
public Formulas withY(double y) {
this.y = y;
return this;
}
// repeat
public double getX() {
return x;
}
public double getY() {
return y;
}
// repeat...
}
用法
public static void main(String[] args) {
Formulas f = new Formulas().withX(2).withY(4);
System.out.printf("%s %s\n", f.getX(), f.getY()); // 2.0 4.0
}
答案 2 :(得分:1)
Eclipse有一个工具可以使用字段生成构造函数,但不能生成所有可能的构造函数组合。
要使用部分或全部可用字段生成构造函数,请转至Source > Generate Constructor using Fields
并选择所需字段。然后单击OK
并自动生成构造函数。
注意:Java中不接受两个具有相同参数类型且具有不同变量名的构造函数。 例如:
Constructor(Object parameterOne){ ... }
Constructor(Object parameterTwo){ ... }
无法编译。