IT虾米网

java之Lombok @Builder 继承解决方法

webabcd 2023年05月20日 程序员 1133 0

Lombok @Builder 不适用于继承用例:

例如

class Foo{ 
 protected int xyz1; 
 ..... 
 protected String xyz7; 
} 
 
 
class Bar extends Foo{ 
 
} 

对于给定的用例,Lombok 将无法生成方法来设置 Foo 类中定义的参数值。

解决方法是:

  1. 手动创建 Bar 的构造函数。
  2. 在该构造函数上放置一个 Builder 注释。

有更好的解决方法吗?

请您参考如下方法:

Lombok 在版本:1.18.2 中引入了实验性功能,用于解决 Builder 注解面临的继承问题,可以通过 @SuperBuilder 注解解决,如下所示。

@SuperBuilder 
public class ParentClass { 
    private final String a; 
    private final String b; 
} 
 
@SuperBuilder 
public class ChildClass extends ParentClass{ 
    private final String c; 
} 

现在,可以使用如下所示的 Builder 类(使用 @Builder 注释是不可能的)

ChildClass.builder().a("testA").b("testB").c("testC").build(); 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!