news 2026/6/23 4:20:22

Lombok 注解:简化 Java 代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Lombok 注解:简化 Java 代码

目录

  • 一、深入理解 Lombok 注解:简化 Java 代码的利器
  • 二、Lombok 简介
    • 1、安装 Lombok
      • 1、Maven
      • 2、Gradle
  • 二、常用 Lombok 注解及示例
    • 1. `@Getter` 和 `@Setter`
    • 2. `@ToString`
    • 3. `@EqualsAndHashCode`
    • 4. `@NoArgsConstructor`、`@RequiredArgsConstructor` 和 `@AllArgsConstructor`
    • 5. `@Data`
    • 6. `@Builder`
  • 三、Lombok 的优缺点
    • 1、优点
    • 2、缺点
  • 四、总结

一、深入理解 Lombok 注解:简化 Java 代码的利器

在 Java 开发中,我们常常需要编写大量的样板代码,如构造函数、getter 和 setter 方法、toString 方法等。这些代码虽然必不可少,但会让代码变得冗长,降低代码的可读性和可维护性。Lombok就是为解决这个问题而生的一个Java库,它通过注解的方式,在编译阶段自动生成这些样板代码,从而让我们的代码更加简洁、优雅。

二、Lombok 简介

Lombok是一个Java库,它可以通过注解的方式自动生成构造函数、getter、setter、toString 等方法,减少了手动编写样板代码的工作量。使用Lombok可以使代码更加简洁,同时也能减少因手动编写样板代码而可能引入的错误。

1、安装 Lombok

要使用 Lombok,首先需要在项目中添加 Lombok 的依赖。以下是不同构建工具的添加方式:

1、Maven

pom.xml中添加以下依赖:

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.26</version><scope>provided</scope></dependency>

2、Gradle

build.gradle中添加以下依赖:

compileOnly 'org.projectlombok:lombok:1.18.26' annotationProcessor 'org.projectlombok:lombok:1.18.26'

此外,还需要在 IDE 中安装 Lombok 插件,以确保 IDE 能够正确识别 Lombok 注解。

二、常用 Lombok 注解及示例

1.@Getter@Setter

这两个注解用于自动生成类的 getter 和 setter 方法。

importlombok.Getter;importlombok.Setter;@Getter@SetterpublicclassUser{privateStringname;privateintage;}

在上述代码中,@Getter@Setter注解会在编译时自动为nameage字段生成gettersetter方法。相当于手动编写了以下代码:

publicclassUser{privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}

2.@ToString

该注解用于自动生成类的toString方法。

importlombok.ToString;@ToStringpublicclassBook{privateStringtitle;privateStringauthor;}

@ToString注解会在编译时自动生成toString方法,输出类的字段信息。例如:

Bookbook=newBook();book.setTitle("Java Programming");book.setAuthor("John Doe");System.out.println(book);

输出结果可能类似于:Book(title=Java Programming, author=John Doe)

3.@EqualsAndHashCode

这个注解用于自动生成类的equalshashCode方法。

importlombok.EqualsAndHashCode;@EqualsAndHashCodepublicclassProduct{privateStringid;privateStringname;}

@EqualsAndHashCode注解会根据类的字段生成equalshashCode方法,方便进行对象的比较和哈希操作。

4.@NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor

  • @NoArgsConstructor:生成无参构造函数。
  • @RequiredArgsConstructor:生成包含必须字段(使用 final 或 @NonNull 注解的字段)的构造函数。
  • @AllArgsConstructor:生成包含所有字段的构造函数。
importlombok.AllArgsConstructor;importlombok.NoArgsConstructor;importlombok.RequiredArgsConstructor;@NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructorpublicclassEmployee{privatefinalStringid;privateStringname;privateintage;}

上述代码会生成无参构造函数、包含 id 字段的构造函数和包含所有字段的构造函数。

5.@Data

@Data是一个组合注解,它包含了@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor的功能。

importlombok.Data;@DatapublicclassStudent{privateStringstudentId;privateStringname;privateintgrade;}

使用@Data注解可以一次性为类生成getter、setter、toString、equals、hashCode方法和包含必须字段的构造函数。

6.@Builder

@Builder注解用于生成一个建造者模式的 API,方便对象的创建。

importlombok.Builder;@BuilderpublicclassCar{privateStringbrand;privateStringmodel;privateintyear;}

使用@Builder注解后,可以通过以下方式创建Car对象:

Carcar=Car.builder().brand("Toyota").model("Corolla").year(2023).build();

三、Lombok 的优缺点

1、优点

  • 代码简洁:减少了大量的样板代码,使代码更加简洁易读。
  • 提高开发效率:自动生成代码,减少了手动编写的工作量,提高了开发效率。
  • 减少错误:避免了因手动编写样板代码而可能引入的错误。

2、缺点

  • 可读性降低:对于不熟悉 Lombok 的开发者来说,可能会降低代码的可读性。
  • 调试困难:由于代码是在编译阶段生成的,调试时可能会遇到一些困难。
  • 依赖问题:引入了额外的依赖,可能会导致项目的依赖管理变得复杂。

四、总结

Lombok是一个非常实用的 Java 库,它通过注解的方式自动生成样板代码,使我们的代码更加简洁、高效。然而,在使用Lombok时,我们也需要权衡其优缺点,根据项目的实际情况进行选择。同时,为了保证代码的可维护性,建议在团队中统一对Lombok的使用规范。希望通过本文的介绍,你对Lombok有了更深入的了解,并能在实际开发中灵活运用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/22 15:25:08

别让大数据“全表扫描”掏空你:数据分区策略与分区裁剪的实战心经

别让大数据“全表扫描”掏空你&#xff1a;数据分区策略与分区裁剪的实战心经 大家好&#xff0c;我是 Echo_Wish。今天不聊那些高屋建瓴的框架宣传&#xff0c;我们来点接地气的——数据分区策略怎么做才有效&#xff1f;分区裁剪怎么让查询跑得飞&#xff1f; 这话题其实特别…

作者头像 李华
网站建设 2026/6/22 22:02:56

(转载)真正的缘分,“推背感”都跟强

这个推背感就是&#xff1a;除了这个&#xff0c;其余没得选。 讲个真实故事。 有个前同事&#xff0c;在广告行业混了八年&#xff0c;前年公司裁员&#xff0c;他是第一批走的。原以为凭资历很快能找到下家&#xff0c;结果投了上百份简历&#xff0c;只有三家小公司给了面…

作者头像 李华
网站建设 2026/6/22 10:39:05

Hadoop生态下的数据预处理:MapReduce实战案例解析

Hadoop生态下的数据预处理:从理论到MapReduce实战的完整指南 一、引言:为什么数据预处理是大数据分析的“地基”? 你是否遇到过这样的场景? 拿到一份TB级的电商用户行为日志,却发现里面混着缺失关键字段的记录(比如没有用户ID)、格式混乱的时间戳(比如1620000000000)…

作者头像 李华
网站建设 2026/6/23 0:17:58

新手也能轻松建站!VanBlog+cpolar让博客创作和分享更简单

文章目录前言1. Linux本地部署2. VanBlog简单使用3. 安装内网穿透4. 创建公网地址5. 创建固定公网地址VanBlog 搭配 Cpolar&#xff0c;让博客创作不再受限于本地环境&#xff0c;为创作者提供了更灵活、高效的创作体验。前言 VanBlog 是一款轻量级个人博客系统&#xff0c;专…

作者头像 李华
网站建设 2026/6/21 21:37:27

vue导出excel文件

Vue.js 本身不提供直接导出 Excel 的功能&#xff0c;但可以通过以下几种方式实现&#xff1a; 1. 前端导出方案 使用 xlsx 库&#xff08;推荐&#xff09; npm install xlsx # 或 yarn add xlsx <template><button click"exportExcel">导出Excel&l…

作者头像 李华