@Builder
是 Lombok 提供的一个注解,用于自动生成建造者模式的相关代码。通过在类上添加 @Builder
注解,Lombok 会自动生成一个内部静态类作为建造者,并在原始类中添加一个私有构造函数。
使用 @Builder
注解可以简化手动编写建造者模式的代码,使代码更加简洁易读。它可以自动生成链式调用的方法来设置对象的属性,并且可以在需要时进行可选属性的设置。
下面是一个使用 @Builder
注解的示例:
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Person {
private String name;
private int age;
private String address;
private String phoneNumber;
}
在上面的示例中,我们使用 @Builder
注解标注了 Person
类。Lombok 会自动生成一个内部静态类 PersonBuilder
作为建造者,并在 Person
类中添加一个私有构造函数。
现在,我们可以使用自动生成的建造者来创建 Person
对象,如下所示:
Person person = Person.builder()
.name("John")
.age(30)
.address("123 Main St")
.phoneNumber("555-1234")
.build();
在上面的代码中,我们使用链式调用的方式设置 Person
对象的属性,并通过 build()
方法来构建最终的对象。build()
方法会返回一个 Person
对象。
@Builder
注解还具有其他一些可选的配置选项,例如可以使用 @Builder.Default
注解设置属性的默认值,可以使用 @Singular
注解处理集合类型的属性等。通过这些配置选项,可以进一步定制生成的建造者模式的代码。
需要注意的是,使用 @Builder
注解需要事先在项目中引入 Lombok 相关的依赖,并确保 IDE 配置中已启用 Lombok 插件,以使 Lombok 注解生效。
总而言之,@Builder
是 Lombok 提供的一个注解,用于自动生成建造者模式的相关代码。它可以简化手动编写建造者模式的代码,使代码更加简洁易读。通过使用 @Builder
注解,可以方便地创建和设置对象的属性,并生成最终的对象。
下面再举例一些使用建造者模式的例子:
- 创建用户对象(User):
import lombok.Builder; import lombok.Getter; @Getter @Builder public class User { private String username; private String password; private String email; private boolean isActive; }
通过
@Builder
注解,我们可以轻松创建用户对象,并使用链式调用设置属性。 - 构建图书对象(Book):
import lombok.Builder; import lombok.Getter; @Getter @Builder public class Book { private String title; private String author; private String publisher; private int year; private double price; }
在这个示例中,我们使用
@Builder
注解创建了一个图书对象,并可以方便地设置图书的各个属性。 - 创建订单对象(Order):
import lombok.Builder; import lombok.Getter; import java.util.List; @Getter @Builder public class Order { private String orderId; private List<String> items; private String customerName; private String shippingAddress; }
通过
@Builder
注解,我们可以快速构建订单对象,并设置订单的各个属性。 - 构建配置对象(Configuration):
import lombok.Builder; import lombok.Getter; @Getter @Builder public class Configuration { private String appName; private String databaseUrl; private String username; private String password; private int port; }
在这个示例中,我们使用
@Builder
注解创建了一个配置对象,并可以使用链式调用设置配置的各个属性。通过使用
@Builder
注解,可以简化创建复杂对象的过程,并提供了一种清晰、简洁的方式来设置对象的属性。它遵循建造者模式的原则,将对象的构建过程与其表示分离,并提供了灵活性和可读性。同时,使用 Lombok 的@Builder
注解还可以减少手动编写建造者模式的代码量。