龙目岛中的@​​Delegate和@Builder组合

时间:2019-01-22 13:15:19

标签: java lombok

我有一个来自第三方jar的Acc.java类,如下所示

@Data
public class Acc{

private String a;

private String b;

}

我在类Bcc.java中使用Acc类作为实例变量。并且我想使用lombok在Bcc.java中为Acc实例变量创建构建器。

我尝试过以下方式

@Data
@Builder
public class Bcc{

@Delegate
private Acc acc;
}

从上面的代码中,我看到Bcc.builder()。acc()这是具有构建Acc对象方法的构建器。

但是我需要Bcc.builder.a(“”)。b(“”)。build()。 “ a”和“ b”是Acc.java类的一部分。

有人可以帮助我吗?。

1 个答案:

答案 0 :(得分:0)

我认为 lombok 不支持开箱即用。但这里有一些代码来支持这一点。

@Data
@Builder
public class Bcc {

    @Delegate
    private Acc acc;
    
    public static class BccBuilder {

        public Bcc.BccBuilder a(String a) {
            if (this.acc == null) this.acc = new Acc();
            this.acc.setA(a);
            return this;
        }

        public Bcc.BccBuilder b(String b) {
            if (this.acc == null) this.acc = new Acc();
            this.acc.setB(b);
            return this;
        }
    }
}