广告
返回顶部
首页 > 资讯 > 精选 >Java中Lombok的使用详解
  • 605
分享到

Java中Lombok的使用详解

2023-06-16 17:06:15 605人浏览 泡泡鱼
摘要

这篇文章主要介绍“Java中Lombok的使用详解”,在日常操作中,相信很多人在Java中Lombok的使用详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Lombok的使用详解”的疑惑有所帮助!

这篇文章主要介绍“Java中Lombok的使用详解”,在日常操作中,相信很多人在Java中Lombok的使用详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Lombok的使用详解”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言

在 Java 应用程序中存在许多重复相似的、生成之后几乎不对其做更改的代码,但是我们还不得不花费很多精力编写它们来满足 Java 的编译需求

比如,在 Java 应用程序开发中,我们几乎要为所有 Bean 的成员变量添加 get() ,set()  等方法,这些相对固定但又不得不编写的代码浪费程序员很多精力,同时让类内容看着更杂乱,我们希望将有限的精力关注在更重要的地方。

Lombok 已经诞生很久了,甚至在 Spring Boot Initalizr 中都已加入了 Lombok 选项,

Java中Lombok的使用详解

这里我们将 Lombok 做一下详细说明:

Lombok

官网的介绍:Project Lombok is a java library that automatically plugs into your  editor and build tools, spicing up your java. Never write another getter or  equals method again. Early access to future java features such as val, and much  more.

直白的说: Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java  对象(POJO)。它通过注解实现这一目的,且看:

Bean 的对比

传统的 POJO 类是这样的

Java中Lombok的使用详解

通过Lombok改造后的 POJO 类是这样的

Java中Lombok的使用详解

一眼可以观察出来我们在编写 Employee 这个类的时候通过 @Data 注解就已经实现了所有成员变量的 get() 与 set() 方法等,同时  Employee 类看起来更加清晰简洁。Lombok 的神奇之处不止这些,丰富的注解满足了我们开发的多数需求。

Lombok的安装

查看下图,@Data的实现,我们发现这个注解是应用在编译阶段的

Java中Lombok的使用详解

这和我们大多数使用的注解,如 spring 的注解(在运行时,通过反射来实现业务逻辑)是有很大差别的,如Spring 的@RestController  注解

Java中Lombok的使用详解

一个更直接的体现就是,普通的包在引用之后一般的 IDE 都能够自动识别语法,但是 Lombok 的这些注解,一般的 IDE 都无法自动识别,因此如果要使用  Lombok 的话还需要配合安装相应的插件来支持 IDE 的编译,防止IDE 的自动检查报错,下面以 IntelliJ idea 举例安装插件。

在Repositories中搜索Lombok,安装后重启IDE即可

Java中Lombok的使用详解

Maven或Gradle工程中添加依赖

Java中Lombok的使用详解

至此我们就可以应用 Lombok 提供的注解干些事情了。

Lombok注解详解

Lombok官网提供了许多注解,但是  “劲酒虽好,可不要贪杯哦”,接下来逐一讲解官网推荐使用的注解(有些注解和原有Java编写方式没太大差别的也没有在此处列举,如@  Synchronized等)

Java中Lombok的使用详解

@Getter和@Setter

该注解可应用在类或成员变量之上,和我们预想的一样,@Getter 和 @Setter 就是为成员变量自动生成 get 和 set 方法,默认生成访问权限为  public 方法,当然我们也可以指定访问权限 protected 等,如下图:

Java中Lombok的使用详解

成员变量name指定生成set方法,并且访问权限为protected;boolean类型的成员变量 female 只生成get方法,并修改方法名称为  isFemale()。当把该注解应用在类上,默认为所有非静态成员变量生成 get 和 set 方法,也可以通过 AccessLevel.NONE  手动禁止生成get或set方法,如下图:

Java中Lombok的使用详解

@ToString

该注解需应用在类上,为我们生成 Object 的 toString 方法,而该注解里面的几个属性能更加丰富我们想要的内容, exclude 属性禁止在  toString 方法中使用某字段,而of属性可以指定需要使用的字段,如下图:

Java中Lombok的使用详解

查看编译后的Employee.class得到我们预期的结果,如下图

Java中Lombok的使用详解

@EqualsAndHashCode

该注解需应用在类上,使用该注解,lombok会为我们生成 equals(Object other) 和 hashcode()  方法,包括所有非静态属性和非transient的属性,同样该注解也可以通过 exclude 属性排除某些字段,of 属性指定某些字段,也可以通过  callSuper 属性在重写的方法中使用父类的字段,这样我们可以更灵活的定义bean的比对,如下图:

Java中Lombok的使用详解

查看编译后的Employee.class文件,如下图:

Java中Lombok的使用详解

@NonNull

该注解需应用在方法或构造器的参数上或属性上,用来判断参数的合法性,默认抛出 NullPointerException 异常

Java中Lombok的使用详解

查看NonNullExample.class文件,会为我们抛出空指针异常,如下图:

Java中Lombok的使用详解

当然我们可以通过指定异常类型抛出其他异常,lombok.nonNull.exceptionType = [NullPointerException |  IllegalArgumentException] , 为实现此功能我们需要在项目的根目录新建lombok.config文件:

Java中Lombok的使用详解

重新编译NonNullExample类,已经为我们抛出非法参数异常:

Java中Lombok的使用详解

@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor

以上三个注解分别为我们生成无参构造器,指定参数构造器和包含所有参数的构造器,默认情况下,@RequiredArgsConstructor,  @AllArgsConstructor 生成的构造器会对所有标记 @NonNull 的属性做非空校验。

无参构造器很好理解,我们主要看看后两种,先看 @RequiredArgsConstructor

Java中Lombok的使用详解

从上图中我们可以看出, @RequiredArgsConstructor 注解生成有参数构造器时只会包含有 final 和 @NonNull 标识的  field,同时我们可以指定 staticName 通过生成静态方法来构造对象

查看Employee.class文件

Java中Lombok的使用详解

当我们把 staticName 属性去掉我们来看遍以后的文件:

Java中Lombok的使用详解

相信你已经注意到细节

@AllArgsConstructor 就更简单了,请大家自行查看吧

@Data

介绍了以上的注解,再来介绍 @Data 就非常容易懂了,@Data 注解应用在类上,是@ToString, @EqualsAndHashCode,  @Getter / @Setter 和 @RequiredArgsConstructor合力的体现,如下图:

Java中Lombok的使用详解

@Builder

函数式编程或者说流式的操作越来越流行,应用在大多数语言中,让程序更具更简介,可读性更高,编写更连贯,@Builder就带来了这个功能,生成一系列的builder  api,该注解也需要应用在类上,看下面的例子就会更加清晰明了。

Java中Lombok的使用详解

编译后的Employee.class文件如下:

Java中Lombok的使用详解

妈妈再也不用担心我 set 值那么麻烦了,流式操作搞定:

Java中Lombok的使用详解

@Log

该注解需要应用到类上,在编写服务层,需要添加一些日志,以便定位问题,我们通常会定义一个静态常量Logger,然后应用到我们想日志的地方,现在一个注解就可以实现:

Java中Lombok的使用详解

查看class文件,和我们预想的一样:

Java中Lombok的使用详解

Log有很多变种,CommonLog,Log4j,Log4j2,Slf4j等,lombok依旧良好的通过变种注解做良好的支持:

Java中Lombok的使用详解

我实际使用的是 @Slf4j 注解

val

熟悉 javascript 的同学都知道,var 可以定义任何类型的变量,而在 java 的实现中我们需要指定具体变量的类型,而 val  让我们摆脱指定,编译之后就精准匹配上类型,默认是 final 类型,就像 java8  的函数式表达式,()->System.out.println(“hello lombok”); 就可以解析到Runnable函数式接口。

Java中Lombok的使用详解

查看解析后的class文件:

Java中Lombok的使用详解

@Cleanup

当我们对流进行操作,我们通常需要调用 close 方法来关闭或结束某资源,而 @Cleanup 注解可以帮助我们调用 close 方法,并且放到  try/finally 处理块中,如下图:

Java中Lombok的使用详解

编译后的class文件如下,我们发现被try/finally包围处理,并调用了流的close方法

Java中Lombok的使用详解

其实在 jdk1.7 之后就有了 try-with-resource,不用我们显式的关闭流,这个请大家自行看吧

总结

Lombok的基本操作流程是这样的:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 定义编译期的注解

  3. 利用jsR269 api(Pluggable Annotation Processing API )创建编译期的注解处理器

  4. 利用tools.jar的javac api处理AST(抽象语法树)

  5. 将功能注册进jar包

Java中Lombok的使用详解

Lombok 当然还有很多注解,我推荐使用以上就足够了,这个工具是带来便利的,而不能被其捆绑,“弱水三千只取一瓢饮,代码千万需抓重点看”,Lombok  能让我更加专注有效代码排除意义微小的障眼代码(get,set等),另外Lombok生成的代码还能像使用工具类一样方便(@Builder)。

到此,关于“Java中Lombok的使用详解”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Java中Lombok的使用详解

本文链接: https://www.lsjlt.com/news/284506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中Lombok的使用详解
    这篇文章主要介绍“Java中Lombok的使用详解”,在日常操作中,相信很多人在Java中Lombok的使用详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Lombok的使用详解”的疑惑有所帮助!...
    99+
    2023-06-16
  • 一文详解Lombok中@ToString()的使用技巧
    目录Lombok 的使用Lombok的配置父类 toString() 的调用省略字段名称使用字段代替 Getter字段的包含和排除输出排序方法输出修改字段名称打印数组有一些注意点在平...
    99+
    2023-02-03
    Lombok @ToString()使用技巧 Lombok @ToString()使用 Lombok @ToString()
  • Java开发神器Lombok安装与使用详解
    目录安装Idea插件的安装maven中pom文件的导入使用val@Data@Getter/@Setter@Log4j@AllArgsConstructor@NoArgsConstru...
    99+
    2022-11-13
  • java中Lombok的注解怎么用
    这篇文章主要讲解了“java中Lombok的注解怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java中Lombok的注解怎么用”吧!注解举例@ToString:实现toString(...
    99+
    2023-06-30
  • IDEA 安装lombok及使用详解
    目录 ① 为什么使用 ② 如何安装 1.安装lombok插件:    2.添加lombok的maven的pom.xml依赖:   3.实体类示例代码Student.java 4.测试类LombokTest.java    5. 输出结果: ...
    99+
    2023-09-02
    intellij-idea java ide
  • Java的Lombok如何使用
    本篇内容主要讲解“Java的Lombok如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的Lombok如何使用”吧!1)引入相应的maven包:<dependency>...
    99+
    2023-06-16
  • Java中Lombok常用注解分享
    目录Our-task介绍安装Lombok加入Maven依赖IDEA中安装Lombok插件注解介绍@Getter和@Setter@ToString@EqualsAndHashCode@...
    99+
    2023-05-17
    Java Lombok常用注解 Java Lombok注解 Java Lombok
  • 一文了解Java中record和lombok的使用对比
    目录小型不可变对象透明的数据载体有许多字段的类可变数据继承性结论大家好,我是指北君。 Java的 record 关键字是Java 14中引入的一个新的语义特性。record 对于创建...
    99+
    2022-11-13
  • Java库lombok及注解如何使用
    本篇内容介绍了“Java库lombok及注解如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lombok是什么Lombok是一个旨在减...
    99+
    2023-07-02
  • java中有哪些Lombok注解
    本篇文章为大家展示了java中有哪些Lombok注解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于Java的实现...
    99+
    2023-06-14
  • Lombok注解-@SneakyThrows的使用
    目录Lombok注解@SneakyThrows原理lombok注解@SneakyThrows探索及与try catch、throws Exception区别导入 Maven方法测试L...
    99+
    2022-11-13
  • springboot使用小工具之Lombok、devtools、SpringInitailizr详解
    目录LombokdevtoolsSpring Initailizr(项目初始化向导)Lombok 可以代替手写get、set、构造方法等,需要idea装插件lombok 导包: &l...
    99+
    2022-11-13
    springboot使用工具 springboot Lombok springboot devtools springboot Spring Initailizr
  • Lombok中关于@Data的使用解析
    目录Lombok@Data注解 内部实现 问题总结 解决方法 Lombok的@Data踩坑记录证明小结一下当你在使用 Lombok 的 @Data 注解时,其实会有一些坑需要关注,今...
    99+
    2022-11-12
  • 如何在Java项目中使用Lombok
    本文章向大家介绍如何在Java项目中使用Lombok的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许...
    99+
    2023-06-06
  • Lombok中@EqualsAndHashCode注解如何使用
    这篇文章主要介绍“Lombok中@EqualsAndHashCode注解如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Lombok中@EqualsAndHashCode注解如何使用”文章能帮...
    99+
    2023-07-05
  • Springboot中使用lombok的@Data注解方式
    目录Springboot 使用lombok的@Data注解idea安装lombok插件创建项目,编写实体类编写测试类测试结果springBoot 注解@Data注入失败一、Files--Seetings--Plugins二、如果重启后仍注入...
    99+
    2014-06-11
    Springboot注解 lombok 注解 @Data注解
  • Lombok中@EqualsAndHashCode注解的使用及说明
    目录@EqualsAndHashCode注解先来看问题1、定义一个基础类Car2、定义一个扩展类BYD继承Car3、分别new两个对象并比较4、查看比较结果解决办法总结@Equals...
    99+
    2023-03-06
    Lombok @EqualsAndHashCode @EqualsAndHashCode注解 @EqualsAndHashCode注解使用
  • java中Lombok的作用是什么
    java中Lombok的作用是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。...
    99+
    2023-06-14
  • java Lombok之@Accessors怎么使用
    这篇文章主要介绍“java Lombok之@Accessors怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java Lombok之@Accessors怎么使用”文章能帮...
    99+
    2023-07-05
  • Java的Lombok如何安装与使用
    这篇文章主要介绍了Java的Lombok如何安装与使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。安装Lombok的安装分两部分:Idea插件的安装和maven中pom文件...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作