@Builder
注解,用于简化构建器模式的实现。
Lombok 通过在编译时自动生成代码来实现 @Builder
注解的功能。当你使用 @Builder
注解时,Lombok 会在编译过程中生成一个新的内部类,该内部类包含所有字段的 setter 方法,以及一个 build()
方法用于创建对象。这个内部类的名称可以根据配置的 builderClassName
属性进行自定义。
@Builder 注解
@Builder
注解是 Lombok 库提供的一种注解,用于自动生成构建器模式的相关代码。构建器模式是一种用于创建对象的设计模式,它通过链式方法调用的方式来设置对象的属性,使得代码更加清晰和易读。
源码如下:
@Target({TYPE, METHOD, CONSTRUCTOR})
@Retention(SOURCE)
public @interface Builder {
@Target(FIELD)
@Retention(SOURCE)
public @interface Default {}
String builderMethodName() default "builder";
String buildMethodName() default "build";
String builderClassName() default "";
boolean toBuilder() default false;
AccessLevel access() default lombok.AccessLevel.PUBLIC;
String setterPrefix() default "";
@Target({FIELD, PARAMETER})
@Retention(SOURCE)
public @interface ObtainVia {
String field() default "";
String method() default "";
boolean isStatic() default false;
}
}
作用
@Builder
注解的主要作用是生成一个包含所有类字段的构建器,使得对象的创建过程变得更加简单和可读。它可以减少冗长的构造函数和 setter 方法,提高代码的可维护性。
注解属性
@Builder
注解有一些可选的属性,用于定制生成的构建器:
以下是一些常用的属性:
builderClassName
:指定生成的构建器类名,默认为Builder
。builderMethodName
:指定生成的静态构建器方法的名称,默认为builder
。buildMethodName
:指定生成的构建器方法的名称,默认为build
。toBuilder
:如果设置为true
,则生成一个toBuilder()
方法,用于创建一个新的构建器实例,以便修改部分字段并生成新的对象。setterPrefix
:设置属性的前缀,用于生成 setter 方法的名称,默认为空字符串。access
:用于控制生成的构建器类中的访问修饰符,以指定哪些字段可以被外部访问。该属性可以在@Builder
注解中进行配置,以便更精细地控制生成的构建器的可见性。
用法
首先,在你的 Java 类上添加 @Builder
注解,并可选地配置注解属性。然后,Lombok 将自动生成构建器相关的代码。以下是一个示例:
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
public class Person {
private String firstName;
private String lastName;
private int age;
}
// 使用构建器创建对象
Person person = Person.builder()
.firstName("John")
.lastName("Doe")
.age(30)
.build();
在上面的示例中,我们使用 @Builder
注解来生成 Person
类的构建器,然后可以使用链式方法调用来设置对象的属性,并最终调用 build()
方法来创建 Person
对象。
总结
总之,@Builder
注解是 Lombok 库提供的一个方便的注解,用于生成构建器模式相关的代码,简化了对象的创建过程。通过减少冗长的 setter 方法和构造函数,它可以提高代码的可读性和可维护性。