首页 > 编程语言 >浅谈Java注解之Builder

浅谈Java注解之Builder

时间:2024-12-19 09:00:49浏览次数:6  
标签:Java 浅谈 版本号 Builder projectlombok 注解 lombok 默认值

一、Builder的介绍

@Builder 是Lombok库提供的一个注解,用于自动生成建造者模式(Builder Pattern)所需的代码。建造者模式是一种设计模式,用于创建复杂对象,它将对象的构造与表示分离,使得同样的构造过程可以创建不同的表示。通过@Builder注解,可以简化对象的构建过程,避免手动编写大量的模板代码。

二、Builder的特点

1、链式调用@Builder支持链式调用,使得代码更加简洁和易读。

2、可选参数:可以选择性地设置参数,未设置的参数将使用默认值。

3、不可变对象:可以轻松创建不可变对象,通过Builder模式创建的对象是线程安全的。

4、自定义构建方法:可以自定义构建方法以进行额外的初始化或验证。

5、默认值设置:使用@Builder.Default注解可以指定默认值。

三、Builder的使用

添加Lombok依赖:在项目的构建配置文件中添加Lombok依赖,例如Maven的pom.xml或Gradle的build.gradle

Maven:

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>最新版本号</version>
  <scope>provided</scope>
</dependency>

Gradle:

dependencies {
  compileOnly 'org.projectlombok:lombok:最新版本号'
  annotationProcessor 'org.projectlombok:lombok:最新版本号'
}

在类上使用@Builder注解:在需要生成Builder模式代码的类上添加@Builder注解。

import lombok.Builder;
@Builder
public class User {
    private String name;
    private int age;
    private String email;
}

创建对象:使用@Builder自动生成的Builder类来创建对象,通过链式调用的方式设置属性,最后调用build()方法创建对象实例。

User user = User.builder()
                .name("John Doe")
                .age(30)
                .email("john.doe@example.com")
                .build();

标签:Java,浅谈,版本号,Builder,projectlombok,注解,lombok,默认值
From: https://blog.csdn.net/a876106354/article/details/144549193

相关文章

  • Java学习,数组反转
    Java反转数组,既将数组中的元素顺序颠倒,可以通过创建一个新的数组来存储反转后的元素,或者原地(in-place)反转数组,即不使用额外的数组空间。使用新数组创建一个新的数组,并按照原数组的反向顺序将元素复制到新数组中:publicclassReverseArrayExample1{  publicstaticvo......
  • 2024实测验证可用的股票数据接口集合.:python、JavaScript 、JAVA等实例代码演示教你如
    实测可用的股票数据接口,可以直接点击在浏览器中验证:沪深两市股票列表API接口链接(可点击验证):https://api.mairui.club/hslt/list/b997d4403688d5e66a【实时数据接口】沪深两市实时交易数据接口API接口链接(可点击验证):https://api.mairui.club/hsrl/ssjy/000001/b997d4403......
  • java集合框架的详细学习
     集合框架和数组的区别为什么引入集合概念使用数组具有局限性:是一种固定大小的数据结构,其元素类型和数量在创建时就已经确定,并且无法更改,不使用就浪费了。为了解决数组的局限性,引入容器类的概念。容器可以根据需要动态地增加或减少元素。此外,集合框架还提供了丰富的操作方......
  • JAVA领域驱动设计DDD在B端营销系统的实践15
     1背景通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的营销系统来支撑商户的线上营销运营。在系统建设过程中,面临着业务体量大、行业跨度大、场景多样、客户结构复杂,需求多变等挑战。......
  • ZZNUOJ_1341:简单密码破解(C/C++/Java)
    题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。 假设渊子原来一个BBS上的密码为zvbo941987,为了方便记忆,他通过一种算法把这个密码变换成YUANzi1987,这个密码是他的名......
  • JAVA中的包,抽象类
    什么是包java中的package就是一个类库单元,包内含有一组类,它们在单一的名称空间之下被组织在了一起,这个名称空间就是包名srcdao------>数据库相关的model------>>实体内容service----->业务util-------->工具包的作用1.把功能相似或相关的类或接口组织在一个包中,方便类......
  • 关于java中方法的那些事
    文章目录前言一、什么是方法?方法的完整格式是啥?二、方法如何使用?三、为什么要用方法?四、如果方法不需要接收数据处理,不需要返回数据,应该怎么办?要注意什么?五、方法使用时的常见问题六、定义方法重点关注的是哪几点?七、什么是方法重载?八、方法重载需要注意什么?九、方法重载......
  • JAVA领域驱动设计DDD在B端营销系统的实践
     1背景通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的营销系统来支撑商户的线上营销运营。在系统建设过程中,面临着业务体量大、行业跨度大、场景多样、客户结构复杂,需求多变等挑战。......
  • 好用的java工具类整理
    一、封装树形菜单数据表结构必须有parentId,以便于实现无限级分类,如下:实体类@Schema(description="系统菜单实体类")@DatapublicclassSysMenuextendsBaseEntity{ @Schema(description="父节点id") privateLongparentId; @Schema(description="节点标题"......
  • javaweb知识点总结
    HTML1.HTML是一种超文本标记语言,可存储文字,图片,视频等等2.HTML依靠浏览器解析运行3.HTML有自己的预定义标签4.HTML由三部分组成,遵循W3C标准结构:HTML表现:CSS行为:JavaScript基础知识:1.颜色标签文字2.HTML文档不区分大小写3.HTMl语法松散#有时语法错误,功能仍正常基础......