type
status
date
slug
summary
tags
category
icon
password
@Builder
注解
@Builder
注解是Lombok库中的一个强大注解,用于简化Java对象的构建过程。它通过自动生成一个内部静态的构建器类(Builder类),实现了建造者模式(Builder Pattern),从而使对象的创建更加灵活和简洁。以下是关于@Builder
注解的详细解释:一、基本功能
- 自动生成构建器类:在类上添加
@Builder
注解后,Lombok会自动生成一个内部静态的构建器类。这个类包含了类中所有字段的setter方法(对于final字段,如果它们没有在声明时被初始化,则也会在构建器中生成相应的字段和setter方法),以及一个build()
方法用于创建并返回类的实例。
- 链式调用:构建器类中的setter方法返回构建器自身,这使得可以链式地调用这些方法来设置对象的属性。例如,
Person.builder().name("Alice").age(30).build();
。
- 不可变性:通过
@Builder
注解生成的对象在构建完成后是不可变的,即对象的属性一旦在build()
方法被调用后就无法被修改(除非在@Builder
注解中设置了toBuilder=true
,允许通过toBuilder()
方法复制并修改对象)。
二、注解属性
@Builder
注解还提供了多个属性,用于自定义构建器类的行为:- toBuilder:设置为
true
时,允许对已构建的对象进行复制并修改。默认为false
。
- @Builder.Default:用于给非final字段指定默认值。如果构建器中没有设置该字段的值,则使用默认值。
- builderMethodName:指定创建内部静态构建器类的方法名,默认为
builder
。
- buildMethodName:指定创建实体类实例的方法名,默认为
build
。
- builderClassName:指定内部静态构建器类的类名,默认为类名后加
Builder
后缀。
- access:设置构建器方法的访问权限修饰符,如
public
、protected
、private
等。默认为public
。
- setterPrefix:设置setter方法的前缀,默认为空字符串。
三、使用示例
四、注意事项
- 无参构造函数:由于
@Builder
注解会生成一个全参构造函数,因此可能不会生成无参构造函数。如果需要使用无参构造函数(例如,在反序列化时),可以手动添加或使用@NoArgsConstructor
注解。
- 与其他注解的兼容性:
@Builder
注解可能与某些其他注解(如Jackson的@JsonCreator
)存在兼容性问题。在这些情况下,可能需要手动编写构建器类或使用其他Lombok注解(如@JsonPOJOBuilder
)来解决。
- 性能考虑:虽然
@Builder
注解可以极大地简化代码,但在性能敏感的应用中,应该考虑其生成的额外代码可能带来的性能开销。
总之,
@Builder
注解是Lombok库中一个非常有用的注解,它通过实现建造者模式来简化Java对象的构建过程。在使用时,需要注意其生成代码的行为和潜在的性能开销,以及与其他注解的兼容性。- 作者:上玄
- 链接:http://passvip.top/article/2
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。