踩坑系列之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 注解来解决

目录
相关文章
|
25天前
|
Java 数据库连接
hibernate注解实体类(Dept.java)
hibernate注解实体类(Dept.java)
13 1
|
21天前
|
存储 SQL Java
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了(二)
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了
42 1
|
21天前
|
IDE 安全 Java
Lombok的优缺点不建议使用
Lombok的优缺点不建议使用
18 0
|
25天前
|
Java 数据库连接
hibernate注解实体类(Emp.java)
hibernate注解实体类(Emp.java)
14 1
|
25天前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(DeptTest.java)
Hibernate中使用Criteria查询及注解——(DeptTest.java)
8 1
|
25天前
|
Java 数据库连接
Hibernate中使用Criteria查询及注解——(Emp.java)
Hibernate中使用Criteria查询及注解——(Emp.java)
9 0
|
3月前
|
安全 Java 编译器
Java其他: 什么是Java中的注解(Annotation)?
Java其他: 什么是Java中的注解(Annotation)?
41 0
|
9月前
|
SQL XML SpringCloudAlibaba
Java独有特性:注解(annotation)
注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。它本身并不起任何作用,可以说有它没它都不影响程序的正常运行,注解的作用在于**「注解的处理程序」**,注解处理程序通过捕获
117 0
|
1月前
|
Java
【Java】注解(Annotation)
【Java】注解(Annotation)
18 0
|
12月前
|
Java 测试技术 程序员
Java的注解(Annotation)
Java的注解(Annotation)
101 0