java - Lombok @Builder 继承解决方法

标签 java lombok

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();

关于java - Lombok @Builder 继承解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664098/

相关文章:

java - lombok @AllArgsConstructor 构造函数

java - 使用 Lombok 记录器记录时有没有办法屏蔽类值?

java - 从 Eclipse 集合 IntList/IntIterable 创建 IntStream 和 Stream<Integer>

java - Lombok 项目 AllArgsConstructor 不工作

java - 使用 Jackson 与 Lombok builder 反序列化

java - .Net 和 C++ 到 Java 过渡的良好开端?

intellij-idea - 使用 ClassName::new (java 8) 生成类实例失败

java - 如何在 Java 中实例化泛型类型?

java - java中依赖于对象的代码

java - 比较方法违反了它的一般契约和方法 compareTo