Lombok -----此java库 常用的注解及其功能总结

devtools/2024/9/23 6:24:46/

总结

        Lombok 是一个 Java 库,它可以帮助开发者减少在 Java 中编写那些繁琐的“boilerplate”代码的工作量,比如 getter 方法、setter 方法、构造函数、toString 方法等。       

        通过简单的注解,Lombok 能够自动为你的类生成这些方法,从而使得代码更加简洁,同时也减少了出错的机会。


常用的注解及其功能简介

  1. @Getter@Setter

    • 这两个注解分别用来生成类中所有字段(或指定字段)的 getter 和 setter 方法。
    • 可以添加到类级别或者特定的字段上。
    • 例如:
      1private String name;
      2@Getter @Setter
      3private int age;
  2. @NoArgsConstructor

    • 自动生成一个无参构造器。
    • 如果类中有私有的构造器,则需要显式地使用此注解。
  3. @AllArgsConstructor

    • 自动生成包含类中所有非静态变量的构造函数。
    • 对于有多个属性的类来说非常有用。
  4. @RequiredArgsConstructor

    • 生成包含 final 或者 @NonNull 注解的字段的构造器。
  5. @ToString

    • 自动生成 toString() 方法,包括类中的所有字段。
    • 可以通过配置排除某些字段,如 @ToString(exclude = "password")
  6. @EqualsAndHashCode

    • 自动生成 equals 和 hashCode 方法。
    • 可以指定哪些字段用于比较,如 @EqualsAndHashCode(of = {"id"})
  7. @Value

    • 创建一个不可变的类。
    • 所有字段默认是 final,并且会自动生成 getter 方法。
    • 类不能被继承。
  8. @Builder

    • 提供了一个类似 Java 8 Optional 类型的构建者模式实现。
    • 允许以流畅的方式创建对象实例,可以指定必填或选填参数。
    • 可以与 @AllArgsConstructor 结合使用,提供所有字段的构建器。


注意事项

        为了使用 Lombok,你需要将它的依赖加入到你的项目中,并确保 IDE 支持 Lombok 插件,以便正确地解析和显示由 Lombok 自动生成的方法。

        虽然 Lombok 大大简化了代码,但也有一些争议,比如它增加了编译过程的复杂性,可能对调试造成一定影响等。因此,在使用 Lombok 时,也需要权衡其利弊。


http://www.ppmy.cn/devtools/114635.html

相关文章

记一次kafka消息丢失问题排查

背景 我写了一个 自定义分区器 ,自测发送了一些简单的如Hello world 之类的消息成功了,并且日志现实确实调用了我自己的分区器,然后我自认为已经完美了。 后来我发现很多消息消费者没有消费, 且发送完成回调(CallBa…

【蜡笔小新专享】安装虚拟机、PHP、DVWA

在 VMware 中安装 PHP 和 DVWA 需要几个步骤。这里将详细介绍如何在一个 Linux 虚拟机中安装 DVWA 和 PHP 环境,以便进行 Web 安全测试。假设你已经在 VMware 上安装好了一个 Linux 发行版(如 Ubuntu)。 步骤 1:安装 VMware 和创…

图像到图像的翻译

图像到图像的翻译(Image-to-Image Translation)是指将一种图像从一种表示转换为另一种表示的过程。该任务的目标是在保证图像语义信息的前提下,将图像风格、颜色或其他视觉特征进行转换。该技术在计算机视觉领域具有广泛应用,例如…

算法 | 基础排序算法:插入排序、选择排序、交换排序、归并排序

文章目录 排序算法一、排序概念及运用1. 概念2. 运用3. 常见排序算法 二、实现常见排序算法1. 插入排序1.1 基本思想1.2 直接插入排序1.3 希尔排序 2. 选择排序2.1 基本思想2.2 直接选择排序2.3 堆排序 3. 交换排序3.1 基本思想3.2 冒泡排序3.3 快速排序3.4 非递归版本 4. 归并…

智能BI项目第四期

开发图表管理功能 规划思路 首先需要做一个列表页。后端已经在星球提供了一个基础的万能项目模板,包含增删改查接口,我们只需要在此基础上进行定制化开发即可。所以本期后端的开发量不多,只需要复用即可,主要是前端。 规划功能…

Linux —— 多线程

一、本篇重点 1.了解线程概念,理解线程与进程区别与联系 2.理解和学会线程控制相关的接口和操作 3.了解线程分离与线程安全的概念 4.学会线程同步。 5.学会互斥量,条件变量,posix信号量,以及读写锁 6.理解基于读写锁的读者写…

Day15笔记-函数返回值函数的封装匿名函数

一、函数基础【重点掌握】 1.关键字参数和不定长参数 # 1.关键字参数 # 注意:默认参数主要体现在函数的定义中【声明】,关键字参数主要体现在函数的调用中 def func1(a,b,c):print(11111,a,b,c) # 必须参数的缺点:必须按照顺序传参&#xff…

关于 Goroutines 和并发控制的 Golang 难题

下面是一道关于 Goroutines 和并发控制的 Golang 难题,它涉及到 Go 的并发编程模型、Goroutines、通道(Channels)以及 sync.WaitGroup 的使用: 问题描述: 你有一个需要并发执行的任务,其中有 100 个 URL …