为了让子类也能使用构建器,可以通过以下方式实现:
使用 @SuperBuilder
注解
Lombok 提供了一个专门的注解 @SuperBuilder
,用于支持继承的构建器模式。
步骤
-
在父类和子类上都添加
@SuperBuilder
注解。 -
确保 Lombok 版本为
1.18.2
或更高。
示例
import lombok.ToString;
import lombok.experimental.SuperBuilder;
@SuperBuilder
@ToString
public class Animal {
private String name;
}
// 子类
@SuperBuilder
@ToString(callSuper = true)
public class Dog extends Animal {
private String breed;
}
// 使用 Builder
public class Main {
public static void main(String[] args) {
Dog dog = Dog.builder()
.name("Buddy")
.breed("Golden Retriever")
.build();
System.out.println(dog); // 输出: Dog(super=Animal(name=Buddy), breed=Golden Retriever)
}
}
@SuperBuilder
的优势
-
支持继承:
@SuperBuilder
会自动处理父类和子类的属性。 -
链式调用:生成的构建器支持链式调用。
-
灵活性:可以轻松扩展和修改父类和子类的属性。