Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 现有类的生成器_Java_Builder_Lombok - Fatal编程技术网

Java 现有类的生成器

Java 现有类的生成器,java,builder,lombok,Java,Builder,Lombok,我得到了以下场景,其中我得到了四个自动生成的类(在一个JAR中): 设置这些对象非常痛苦,而且容易出错。因此,我想知道是否有更好的方法来自动构建生成器。我知道Lombok,但我无法编辑该代码,也无法添加@Builder注释 有什么建议吗 如果不允许更改现有类,则可以扩展它们: public class Existing { String a; String b; public Test(String a, String b) { this.a = a;

我得到了以下场景,其中我得到了四个自动生成的类(在一个JAR中):

设置这些对象非常痛苦,而且容易出错。因此,我想知道是否有更好的方法来自动构建生成器。我知道Lombok,但我无法编辑该代码,也无法添加@Builder注释


有什么建议吗

如果不允许更改现有类,则可以扩展它们:

public class Existing {

    String a;
    String b;

    public Test(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
    }
}

public class ExistingBuilder extends Existing {

    @Builder
    public ExistingBuilder(String a, String b) {
        super(a, b);
    // in case super class doesn't have all arguments constructor just call setters
    // setA(a);
    // setB(b);
    }
}

因此,正如您所看到的,它是可行的,但是超类应该有getter/setter或all args构造函数。

已经尝试过了,但是超类没有args构造函数,而且这种方法似乎不起作用。@user3727540因此,我添加了setter的示例
public class Existing {

    String a;
    String b;

    public Test(String a, String b) {
        this.a = a;
        this.b = b;
    }

    public String getA() {
        return a;
    }

    public void setA(String a) {
        this.a = a;
    }

    public String getB() {
        return b;
    }

    public void setB(String b) {
        this.b = b;
    }
}

public class ExistingBuilder extends Existing {

    @Builder
    public ExistingBuilder(String a, String b) {
        super(a, b);
    // in case super class doesn't have all arguments constructor just call setters
    // setA(a);
    // setB(b);
    }
}