使用Eclipse在Java中生成所有可能构造函数的更快方法

时间:2016-02-16 18:14:00

标签: java eclipse constructor

class Formulas{
    private double x=0, y=0, z=0, t=0, theta=0, v=0, a=0;
}

假设我有一个类似于上面的类,并希望为给定字段的所有可能组合重载构造函数。有没有更快的方法来使用Eclipse生成所有必需的构造函数?

3 个答案:

答案 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){ ... } 

无法编译。