踩坑系列之Lombok @Builder 注解

简介:

简介

Builder 使用创建者模式又叫建造者模式。简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程。@Builder注释为你的类生成相对略微复杂的构建器API。@Builder可以让你以下面显示的那样调用你的代码,来初始化你的实例对象:

User.builder().name("xiaoming").age(18).build();

但Builder注解也非常容易踩坑,下面介绍两个容易出错的坑。

属性包含默认值

@Setter
@Getter
@Builder
public class User {
    private Integer age = 18;
    private String name;
}

在使用Builder构造User对象的时候,默认值无效。如上面设置的age默认值为18,但使用builder构建对象的时候这个默认值无效,下面的代码会输出为null

      User user = User.builder().name("xiaoming").build();
      System.out.println(user.getAge()); // null

Lombok的@Builder注解在使用的,会覆盖model自己的无参数构造函数

image
从上图中可以看出无参数的构造方法不存在,全参数的构造方法为私有。这个时候对其序列化操作会出现异常,如下图。
image
此时可以通过@NoArgsConstructor @AllArgsConstructor 注解来解决

目录
相关文章
|
2天前
|
IDE Java 数据库连接
Lombok注解大全
这些是Lombok中的一些常见注解,它们可以显著减少Java代码中的冗余代码,提高代码的可读性和可维护性。不过,在使用Lombok之前,请确保你的开发环境已经配置好支持Lombok,通常需要安装相应的插件或进行设置以使IDE(如Eclipse、IntelliJ IDEA)能够正确解析Lombok注解。
16 2
|
3天前
|
Java 编译器 Android开发
Java注解你知多少?
Java注解你知多少?
11 1
|
3天前
|
IDE Java 数据库连接
Lombok注解大全
这些是Lombok中的一些常见注解,它们可以显著减少Java代码中的冗余代码,提高代码的可读性和可维护性。不过,在使用Lombok之前,请确保你的开发环境已经配置好支持Lombok,通常需要安装相应的插件或进行设置以使IDE(如Eclipse、IntelliJ IDEA)能够正确解析Lombok注解。
15 4
|
9天前
|
Java Spring
Java 效率编码 必备插件 Lombok 让代码更优雅
该内容是一个关于Lombok插件的教程摘要:介绍了Lombok用于减少Java开发中的模板代码,提升效率;讲解了如何在IntelliJ IDEA中安装Lombok插件,以及在pom.xml中添加依赖;并提到了@Data注解能自动生成getter/setter、equals、hashCode和toString方法,@Slf4j注解自动处理日志,@Builder用于构建对象,以及@AllArgsConstructor和@NoArgsConstructor注解生成构造函数。还鼓励探索更多Lombok的注解用法。
|
11天前
|
Java 编译器 Maven
一文解读|Java编译期注解处理器AbstractProcessor
本文围绕编译器注解都是如何运行的呢? 又是怎么自动生成代码的呢?做出了详细介绍。
|
4月前
|
安全 Java 编译器
Java其他: 什么是Java中的注解(Annotation)?
Java其他: 什么是Java中的注解(Annotation)?
42 0
|
10月前
|
SQL XML SpringCloudAlibaba
Java独有特性:注解(annotation)
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它本身并不起任何作用,可以说有它没它都不影响程序的正常运行,注解的作用在于**「注解的处理程序」**,注解处理程序通过捕获
118 0
|
2月前
|
Java
【Java】注解(Annotation)
【Java】注解(Annotation)
20 0
|
Java 测试技术 程序员
Java的注解(Annotation)
Java的注解(Annotation)
102 0
|
SQL Java 数据库连接
Java 注解 Annotation自定义实战
Java 注解 Annotation自定义实战
110 0