提升开发效率,Lombok的链式编程和构建模式

这篇具有很好参考价值的文章主要介绍了提升开发效率,Lombok的链式编程和构建模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

链式编程

定义

代码示例

​编辑 @Accessors(chain=true) 开启链式编程

​编辑

@Accessors(chain = true,fluent = true) 去除set和get

 构建模式

定义

代码示例

​编辑 踩坑

 @Singular

定义

代码示例

踩坑默认值情况

​编辑

 @With

定义

代码示例


链式编程

定义

链式编程的原理就是返回一个this对象,就是返回本身,达到链式效果。

代码示例

我们平常在创建对象的时候,需要对对象的属性进行设置,传统的设置形式如下

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 @Accessors(chain=true) 开启链式编程

lombok提供了@Accessors注解可以很方便地开启链式编程

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

在structure可以很方便地查看下该类生成的方法

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以看到该类的三个设置属性方法最后返回的都是该类本身

从而实现了链式编程的效果

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

@Accessors(chain = true,fluent = true) 去除set和get

@Accessors还可以根据fluent属性来去除set和get的方法名冗余

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以看到原先的getAge(),setAge()等方法名前的set和get都被省略掉了

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

 构建模式

定义

Builder使用创建者模式又叫建造者模式简单来说,就是一步步创建一个对象,它对用户屏蔽了里面构建的细节,但却可以精细地控制对象的构造过程.

代码示例

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以查看编译后的student类源码

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 踩坑

注意前面只使用了@Builder @Data这两个注解来定义该类,然而@Data注解默认是包含了@AllArgsConstructor(全属性有参构造) @NoArgsConstructor(无参构造)这两个注解的,但是一旦加了@Builder注解后,其无参构造会失效,也就是说原先的new Student()创建实体方法会报错:

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以看到有参构造还是可以用的,但是无参构造已经失效,所以这里还需要额外单独添加@NoArgsConstructor注解来配合使用

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

但是如果加了@NoArgsConstructor注解那么有参构造又出幺蛾子也失效了,所以这里@AllArgsConstructor也需要额外单独添加

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

这样的话无论是构建还是原先的new 实例都可以了

 @Singular

定义

@Singular是Lombok中的注解之一,它用于在生成的Builder模式中处理集合类型的属性。

当我们在类中使用@Singular注解时,它会为属性生成一个特殊的setter方法,这个方法接收单个元素作为参数,而不是整个集合。在使用Builder模式创建对象时,我们可以逐个添加元素,而不需要手动创建集合或使用addAll方法。

代码示例

现在在Student中添加一个集合属性List<String>

然后使用构建模式来为它设置属性值

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率 

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以看到设置集合类型的数据时需要直接传入一个List<String> 类型的数据

可以通过@Singular来方便地设置集合类型的数据

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 它会生成一个默认的添加单个该集合属性元素的方法

注意方法名是默认的,如果不想使用默认的还可以对其value属性设置方法的名字

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 当然它与原先的添加集合的属性方法并不冲突,还可以两者混用

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

注意

@Singular只能应用于lombok已知的集合类型。目前,支持的类型有:

java.util:

Iterable, Collection, 和List (一般情况下,由压缩的不可修改的ArrayList支持).

Set, SortedSet, and NavigableSet (一般情况下,生成可变大小不可修改的HashSet或者TreeSet).

Map, SortedMap, and NavigableMap (一般情况下,生成可变大小不可修改的HashMap或者TreeMap).

踩坑默认值情况

如果该对象使用lombok的构建模式,其默认值这里会失效

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 可以看到hobby属性默认值为null提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 这里需要添加@Builder.Default 注解来设置属性默认值

 提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

此时hobby属性就是默认值了

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 @With

定义

@With是Lombok中的注解之一,它可以用于生成一个新的实例,该实例是原实例的一份副本,但具有某些属性被修改的特点。

当我们在类中使用@With注解时,它会为被注解的属性生成一个特殊的setter方法,该方法接收新的属性值,并返回一个新的实例,而不会修改原实例。这使得我们可以在不直接修改原实例的情况下,创建一个新实例并修改其中的属性值。

代码示例

比如这里给name属性添加@with注解

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

 文章来源地址https://www.toymoban.com/news/detail-619518.html

 测试

提升开发效率,Lombok的链式编程和构建模式,java,java,开发语言,lombok,链式编程,构建模式,小辣椒,提升开发效率

可以看到添加了@with注解的name属性一旦被更改就会产生新的引用实例,注意这里并不是set方法,而是withName方法了 

 

到了这里,关于提升开发效率,Lombok的链式编程和构建模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java Stream常见用法汇总,开发效率大幅提升

    本文已经收录到Github仓库,该仓库包含 计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享 等核心知识点,欢迎star~ Github地址 如果访问不了Github,可以访问gitee地址。 gitee地址 Java8 新增的

    2023年04月14日
    浏览(57)
  • 「Java」《Java集合框架详解:掌握常用集合类,提升开发效率》

    Java 集合框架是 Java 编程中不可或缺的一部分。它提供了一组强大的数据结构和算法,用于存储、操作和处理对象数据。本文将深入探讨 Java 集合框架的核心概念,介绍常用的集合接口和实现类,并提供实际应用示例,帮助读者更好地理解和应用集合框架,提升开发效率。

    2024年02月11日
    浏览(40)
  • Java程序员必备工具大全,助力开发效率提升!

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月13日
    浏览(49)
  • 如何提升项目的本地构建效率?

    最近写H5的项目比较多,该项目从年龄上看着还算比较年轻😂,整个架构应该是直接使用vue-cli基于vue2生成的,那底层打包工具自然也就是webpack,我们知道webpack有个通病,那就是随着项目的不断增大每次构建的时间也会随之越来越长。比如我们这个项目的单次冷启动就达到了

    2024年02月06日
    浏览(44)
  • 掌握Vim:提升编程效率的实用指南

    Vim,作为一款历史悠久且功能丰富的文本编辑器,在全球开发者中享有极高的声誉。它以模式编辑和高度可定制性著称,能够显著提高编码效率。本文旨在为有一定编程基础的读者提供一份实用的Vim使用指南,涵盖从基础命令到高级配置的各个方面。通过本文,读者可以掌握

    2024年01月24日
    浏览(35)
  • 从昏暗到明亮—改善照明环境,提升编程效率

    作为一名程序员博主,长时间写代码、写博客,对着电脑屏幕的生活方式已经渐渐成为了我的日常 。 然而,这种生活方式却给我的眼睛带来了相当大的压力。每当一天的工作结束,我的眼睛总是感到干涩、疲劳,让我感到不舒适。 😮‍💨😮‍💨😮‍💨 为了解决这个问题

    2024年02月08日
    浏览(36)
  • C# LINQ常用操作方法——提升你的编程效率

    导语:C# LINQ(Language Integrated Query)是一种强大且灵活的查询语言,可以将数据查询、过滤、排序和转换等操作无缝集成到C#代码中。本文将介绍一些常用的LINQ操作方法,帮助熟练掌握LINQ的使用,并进一步提升编程效率。 对于初学者来说,基本的查询操作是使用LINQ时的关键

    2024年02月06日
    浏览(35)
  • Copilot使用教程:让AI助手提升你的编程效率

    OpenAI推出的Copilot是一个基于GPT-4的代码生成器,它可以帮助你在编写代码时给出智能建议,从而提高你的编程效率。 文章目录 什么是Copilot Copilot的安装与配置 Copilot的基本功能 Copilot实战案例 Copilot的优势和局限性 Copilot的未来发展 Copilot是由OpenAI开发的一款人工智能编程助手

    2024年02月05日
    浏览(56)
  • TypeScript:赋予JavaScript数据类型新的力量,提升编程效率!

    🎬 岸边的 风: 个人主页  🔥  个人专栏  : 《 VUE 》 《 javaScript 》 ⛺️  生活的理想,就是为了理想的生活 ! ​ TypeScript: 扩展 JavaScript 数据类型,赋予编程更强大的表达能力! 在现代Web开发中, TypeScript 已经成为了一种备受欢迎的编程语言。它不仅继承了 JavaScript 的

    2024年02月09日
    浏览(41)
  • 如何提升软件质量及开发效率

    保证软件质量,是一个贯穿整个软件生存周期的重要问题,而不仅仅只是测试,软件测试只是能发现问题,就像温度计只能判断你是否感冒,从源头降低问题出现的概率才是重点。 软件开发中每个阶段都可能导致软件出现质量问题,并且越到后期,修改和维护的成本就越高,

    2024年02月12日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包