推荐一款代码神器,代码量至少省一半!

简介: 在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。

在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。


今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。


什么是Lombok?

https://www.projectlombok.org/


打开它的官网,这是它的简介。


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 库,它能够自动嵌入到你的 IDE 编辑器和编译工具中。有了它,你再也不用写 getter 或者 equals 方法了,还有 val 特性等。


总之,有了这个家伙,可以省掉很多代码的编写,大大减少了工作量和维护的难度。


如何使用Lombok?

1、安装插件和配置依赖

image.png


如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具。


在 IDEA 中安装 Lombok 插件,这样在使用 Lombok 的时候就不会编译报错。


image.png


下面是 Maven 的依赖配置,在用 Maven 打包的时候也能自动生成需要的代码。

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

如果你使用了 Spring Boot,可以不用带版本号,在 Spring Boot spring-boot-dependencies.pom 这个配置文件里面定义了 Lombok 依赖。image.png所以,你只需要继承版本号即可,当然,有必要的话,你也可以自定义版本号。

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

2、使用注解简化代码

从 IDEA 中的 Lombok 插件特性可以看到支持的注解。

Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

也可以去 Lombok 对应的包里面看所有支持的注解。

现在挑几个讲一下它们的用法吧!

@Getter 和 @Setter

@Getter
@Setter
public class User {
  private String name;
  private int age;
  ...
  // 无需生成 get/set 方法
}

添加 @Getter@Setter 注解用在 Java Bean 类上面,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。

也可以用插件来添加相应的注解。

image.png

来看下源码和生成后的代码对比。

image.png@Getter@Setter 注解也可以单独使用在字段上面,同样也会生成对应的 get/ set 方法及一个默认的构造方法。

@ToString

使用在类上,默认生成所有非静态字段以下面的格式输出,如:

public String toString(){
    return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}

里面也有很多参数,用来自定义输出格式。


@NoArgsConstructor


用在类上,用来生成一个默认的无参构造方法。


@RequiredArgsConstructor


用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。


@AllArgsConstructor


用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。


@Data


用在类上,等同于下面这几个注解合集。


@Getter

@Setter

@RequiredArgsConstructor

@ToString

@EqualsAndHashCode

@Value


用在类上,等同于下面这几个注解合集。


@Getter

@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)

@AllArgsConstructor

@ToString @EqualsAndHashCode}

@NonNull


用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。


还有很多,这里不再撰述。


总结

本文介绍了 Lombok 及使用说明,更多的注解使用方式可以去源码里面看吧,有了这个插件,可以帮助你写出更简洁、更优雅、更漂亮的 Java 代码。


相关文章
|
6月前
|
人工智能 Linux API
从混乱到稳定:OpenClaw保姆级部署流程 目录规范、工作流配置与避坑指南
在 OpenClaw 长期运行过程中,绝大多数用户遇到的执行异常、文件丢失、技能冲突、模型调用失败、工作流不稳定等问题,本质都来源于同一个根源:**工作区没有结构化设计**。随意存放文件、配置散落、日志无归档、数据无隔离、技能无分类,会让整个系统逐渐变得不可维护。真正工程化的 OpenClaw 环境,一定是基于清晰的目录结构、统一的路径规范、明确的文件职责、固定的工作流入口来运行的。
2938 5
|
机器学习/深度学习 人工智能 自然语言处理
Qwen2.5-VL-32B:阿里开源多模态核弹!32B模型吊打自家72B,数学推理封神
阿里巴巴最新开源的Qwen2.5-VL-32B多模态模型,在数学推理、视觉问答等任务中超越前代72B版本,支持图像细粒度理解和复杂逻辑分析,已在HuggingFace开源。
1843 0
Qwen2.5-VL-32B:阿里开源多模态核弹!32B模型吊打自家72B,数学推理封神
|
弹性计算 安全 网络安全
阿里云ECS经典网络和专有网络有什么区别?
阿里云面向客户提供的网络类型服务有经典网络和专有网络两种,但这两者有什么区别呢?阿里官网给的解释是: 经典网络:IP地址由阿里云统一分配,配置简便,使用方便,适合对操作易用性要求比较高、需要快速使用 ECS 的用户。
|
机器学习/深度学习 文字识别 自然语言处理
医疗行业化验单智能识别技术探讨:OCR与表格识别的应用
本文探讨了OCR与表格识别技术在医疗化验单处理中的应用,通过自动化数据提取和录入,显著提高了效率和准确性,降低了人工劳动强度和错误率。技术实现包括图像预处理、文字识别和表格解析等核心算法的优化,支持与医院信息管理系统集成,未来将向跨模态数据融合、多语言适配及数据安全方向发展。
1710 9
|
存储 安全 API
点对点传输
**点对点(P2P)传输技术实现节点间直接数据交换,减少中心服务器依赖,提升效率与速度。优点包括高效、安全、灵活集成。常见应用包括文件共享、实时媒体、宽带接入和VPN。网络拓扑多样,从星形到网状,适应不同场景需求。随着技术发展,P2P将在更多领域发挥作用。**
|
安全 Java 数据安全/隐私保护
快速掌握 WinRAR:详细安装与使用指南
**WinRAR 摘要** WinRAR 是全能压缩工具,支持多格式,如 RAR, ZIP 等。要下载,访问 &lt;https://www.win-rar.com&gt; 选择适合的操作系统和语言。安装时,定制路径和选项,如桌面快捷方式。启动后,通过“选项”-&gt;“设置”配置首选项。使用上,能新建压缩文件,设定格式和选项,也可解压文件到指定目录。遇到问题,如文件损坏,可利用 WinRAR 的修复功能。本文提供下载、安装和使用指导,确保用户顺利操作。
|
存储 自然语言处理 测试技术
SV学习笔记(一)
SV学习笔记(一)
814 1
【Three.js入门】灯光与阴影、平行光阴影属性、聚光灯的属性和应用
【Three.js入门】灯光与阴影、平行光阴影属性、聚光灯的属性和应用
917 1
GNURadio+USRP+OFDM实现文件传输(三)
GNURadio+USRP+OFDM实现文件传输(三)
1374 0
|
存储 分布式计算 Ubuntu
使用IntelliJ Idea开发Spark应用程序
使用IntelliJ Idea开发Spark应用程序