我已经阅读了这篇关于使用lombok @Bulider
和继承https://reinhard.codes/2015/09/16/lomboks-builder-annotation-and-inheritance/的帖子
一切都很好。但在我的情况下,我还需要使用Parent class
的构建器,这种解决方法不起作用。
我尝试将@Builder
添加到Parent class
但由于Child class
尝试从Parent覆盖builder()
方法而导致编译失败。
@AllArgsConstructor
public class Parent {
private final long a;
private final long b;
private final double c;
}
public class Child extends Parent{
private final long aa;
private final long bb;
private final double cc;
@Builder
public Child(long a, long b, long c,
long aa, long bb, long cc)
super(a,b,c);
this.aa = aa;
this.bb = bb;
this.cc =cc;
}
我需要两个案例构建器:
Parent.builder().a(10).b(20).build();
Child.builder().a(10).aa(20).bb(100).build();
lombok可以处理这种情况吗?
答案 0 :(得分:3)
Lombok尝试覆盖Child中Parent类的builder()
方法。
所以我试着将默认名称设置为builder方法。
@Builder(builderMethodName = "parentBuilder")
@AllArgsConstructor
public class Parent {
private final long a;
private final long b;
private final double c;
}
public class Child extends Parent{
private final long aa;
private final long bb;
private final double cc;
@Builder(builderMethodName = "childBuilder")
public Child(long a, long b, long c,
long aa, long bb, long cc)
super(a,b,c);
this.aa = aa;
this.bb = bb;
this.cc =cc;
}
这适合我。
答案 1 :(得分:3)
Lombok引入了实验性功能,其版本为1.18.2,用于解决Builder注释所面临的继承问题,并且可以使用@SuperBuilder注释进行解决,如下所示。
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
现在,可以使用如下所示的Builder类(使用@Builder注释是不可能的)
OracleRemExecServiceV2