Lombok 基础

Lombok 基本注解

Lombok 高级注解

Lombok FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/lombok-annotation-builder.html

Lombok @Builder 注解深入理解


@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 注解有一些可选的属性,用于定制生成的构建器:

以下是一些常用的属性:

  1. builderClassName :指定生成的构建器类名,默认为 Builder
  2. builderMethodName :指定生成的静态构建器方法的名称,默认为 builder
  3. buildMethodName :指定生成的构建器方法的名称,默认为 build
  4. toBuilder :如果设置为 true,则生成一个 toBuilder() 方法,用于创建一个新的构建器实例,以便修改部分字段并生成新的对象。
  5. setterPrefix :设置属性的前缀,用于生成 setter 方法的名称,默认为空字符串。
  6. 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 方法和构造函数,它可以提高代码的可读性和可维护性。