Lombok注解详解

news2024/11/27 17:52:29

文章目录

  • 注解详解
    • lombok包下
      • 注解汇总
      • - Getter
      • - Setter
      • - ToString
      • - EqualsAndHashCode
      • - Data
      • - Value
      • - NonNull
      • - NoArgsConstructor
      • - AllArgsConstructor
      • - RequiredArgsConstructor
      • - Builder
      • - Synchronized
      • - Cleanup
      • - Singular
      • - Generated
      • - SneakyThrows
      • - val
      • - var
    • experimental包下
      • 注解汇总
      • - Accessors
      • - Delegate
      • - SuperBuilder
      • - PackagePrivate
      • - Helper
      • - ExtensionMethod
      • - UtilityClass
      • - Wither
      • - Tolerate
      • - FieldDefaults
      • - NonFinal
      • - FieldNameConstants
    • extern包下
      • 注解汇总
      • - CommonsLog
      • - Flogger
      • - Log
      • - JBossLog
      • - Log4j
      • - Log4j2
      • - Slf4j


注解详解

Lombok提供了很多注解用于生成Java代码,主要存放于lombok、experimental、extern包下。

lombok包下

注解汇总

注解名称作用
Getter注解在类上或属性上,为类的所有属性或单个属性自动生成getter方法
Setter注解在类上或属性上,为类的所有属性或单个属性自动生成setter方法
ToString注解在类上,自动生成类的toString方法
EqualsAndHashCode注解在类上,自动生成类的equals和hashCode方法
Data注解在类上,自动生成getter、setter、toString、equals和hashCode方法
Value注解在类上,创建不可变类,属性定义为不可变,自动生成getter、toString、equals和hashCode方法
NonNull注解在方法、属性、参数等上,标记字段为非空,如果为空则抛出异常
NoArgsConstructor生成无参构造函数
AllArgsConstructor生成包含所有参数的构造函数
RequiredArgsConstructor注解在类上,生成包含所有必需参数的构造函数(如:final修饰的参数、@NonNull注解的属性)
Builder注解在类上,被注解的类加上构造者模式(链式赋值),可使用建造者模式创建对象
Synchronized注解在方法上,为方法添加同步锁
Cleanup注解在实例化的“流”对象前,使用完后自动关闭流
Singular注解在属性上,为集合字段生成单个元素方法,需要配合 @Builder 使用
Generated标记生成的代码
SneakyThrows自动捕获可能抛出的已检查异常,并重新抛出,不会再发生已检查异常未捕获或抛出时,代码报红的情况。
val声明不可变变量,使用推断类型
var声明变量,使用推断类型

- Getter

在这里插入图片描述

在这里插入图片描述

- Setter

在这里插入图片描述

在这里插入图片描述

- ToString

在这里插入图片描述

- EqualsAndHashCode

在这里插入图片描述

- Data

在这里插入图片描述

- Value

@Value 注解和 @Data 类似,区别在于它会把类和所有成员变量默认定义为 private final 修饰,自动生成getter、toString、equals和hashCode方法,但并不生成setter方法。
在这里插入图片描述

- NonNull

在这里插入图片描述

- NoArgsConstructor

在这里插入图片描述

- AllArgsConstructor

在这里插入图片描述

- RequiredArgsConstructor

在这里插入图片描述

- Builder

在这里插入图片描述

- Synchronized

在这里插入图片描述

- Cleanup

在这里插入图片描述

- Singular

在这里插入图片描述

- Generated

- SneakyThrows

已检查异常未捕获或抛出时,代码报红:
在这里插入图片描述

使用SneakyThrows:
在这里插入图片描述

- val

在这里插入图片描述

在这里插入图片描述

- var

在这里插入图片描述

experimental包下

注解汇总

注解名称作用
Accessors配置生成的 getter 和 setter 方法的命名策略。通过设置不同的参数,可以控制生成的方法是否使用链式调用(chain)、是否使用流式调用(fluent)等
Delegate可以对任何字段或无参数方法进行注释,生成委托方法,允许将一个对象的方法委托给另一个对象。通常用于将某个对象的复杂操作委托给其他类,以保持类的简洁性和可维护性。
SuperBuilder在生成的 Builder 模式中包含父类属性。通常用于子类继承父类,并希望在子类中生成 Builder 模式时包含父类的属性。
PackagePrivate自动生成包私有访问级别的方法或字段。这样的方法或字段只能被同一包中的其他类访问,不对外暴露,提高了类的封装性。
Helper将一个类标记为辅助类,用于帮助生成其他类。通常用于为特定功能提供支持的类,但不是该功能的主要实现类。
ExtensionMethod向现有类添加额外的方法。允许在不修改原始类的情况下,为该类添加新的方法,以实现功能扩展。
UtilityClass将一个类标记为实用工具类,自动添加私有构造函数和静态方法。通常用于包含一组静态方法,这些方法与类的实例状态无关,只是一组通用的功能方法。
Wither生成带有某个字段修改器的方法,用于生成新的对象。通常用于不可变对象中,用于创建新的对象并修改其中一个字段的值,而不改变原始对象。
Tolerate允许 Lombok 忽略特定的警告。在某些情况下,Lombok 自动生成的代码可能会引发 IDE 或编译器的警告,可以使用该注解来抑制这些警告。
FieldDefaults为字段添加默认修饰符,如 private、protected 等。通过设置不同的参数,可以为字段设置默认的修饰符和默认值,提高了代码的可读性和可维护性。
NonFinal标记一个字段,使其不会生成 final 修饰符。通常用于标记类中的字段,以防止 Lombok 自动生成的代码为字段添加 final 修饰符,从而允许字段的值在对象创建后进行修改。
FieldNameConstants自动生成字段名的常量。通过该注解,可以在一个接口中定义所有字段的名称常量,避免在代码中直接使用字符串,提高了代码的可维护性和可读性。

- Accessors

- Delegate

- SuperBuilder

- PackagePrivate

- Helper

- ExtensionMethod

- UtilityClass

- Wither

- Tolerate

- FieldDefaults

- NonFinal

- FieldNameConstants

extern包下

extern包中,主要是针对日志,会自动生成日志对象,然后可以直接使用log对象打印日志。

注解汇总

注解名称作用
CommonsLogprivate static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class)
Floggerprivate static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass()
Logprivate static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName())
JBossLogprivate static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class)
Log4jprivate static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class)
Log4j2private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class)
Slf4jprivate static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class)
XSlf4jprivate static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class)

- CommonsLog

- Flogger

- Log

- JBossLog

- Log4j

- Log4j2

- Slf4j

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1668756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】心里有 “B树“ 么?

序言 在学习数据库之前,博主觉得有必要学习B树系列,以便之后更好地了解其原理,既然说到这里了,那就再说几句,数据库是帮助我们管理存在硬件当中的数据,如果要从中读取数据,就要考虑到硬件的读取…

[JNI]使用jni实现简单的Java调用本地C语言代码

[JNI]使用jni实现简单的Java调用本地C语言代码 JNI的解释 Java Native Interface,即Java本地接口。 在Java官方描述中为: The JNI is a native programming interface. It allows Java code that runs inside a Java Virtual Machine (VM) to interope…

智慧文旅赋能旅游服务升级:以科技创新驱动行业变革,打造智慧化、个性化、高效化的旅游新体验,满足游客日益增长的多元化需求

目录 一、引言 二、智慧文旅的概念与内涵 三、智慧文旅在旅游服务升级中的应用 1、智慧旅游服务平台建设 2、智慧景区管理 3、智慧旅游营销 四、智慧文旅推动旅游行业变革的案例分析 案例一:某智慧旅游城市建设项目 案例二:某景区智慧化改造项目…

命令重装Linux系统,无需登录控制面板

命令重装Linux系统,无需登录控制面板 部分无法登录控制面板使用这个脚本 自动安装安装脚本 wget https://lyvba.com/auto.sh bash auto.sh -d 12 -v 64 -a -p $passwd \--mirror https://mirrors.ustc.edu.cn/debian/安装命令参考 # 自动安装 Debian 10 buster …

二叉搜索数使用,底层原理及代码实现

1:二叉搜索树的定义 二叉搜索树的底层是一个二叉链表 二叉搜索树又称二叉排序树,它或者是一棵空树 ,或者是具有以下性质的二叉树 : 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所…

kilimall非洲电商培训,基础版+进阶版+高阶版 从0-1个人可入驻的平台(12节)

亲爱的朋友们,你们知道吗?有一个神奇的电商平台——kilimall,它可以帮助你实现创业梦想,让你走上财富之路! 首先,让我给大家介绍kilimall的基础版。基础版针对的是0经验的小白,提供了详细的教程…

vscode打开esp-idf工程,找不到头文件,有波浪线

就像这样 多半是因为原始的工程不是用vscode的插件新建的,因此没有相关的路径。需要在工程文件夹下的.vscode文件夹中的c_cpp_properties.json文件中增加路径,可以参考插件自动新建的工程里面的写法 {"configurations": [{"name":…

TeXlive TeXstudio安装指南

TeXlive & TeXstudio安装指南 记上次安装Visual Studio Code (Vscode)配置LaTeX后,由于Overleaf页数太多,项目超过了免费计划的编译时限(这两天突然出现这个问题)。加上毕设和PPT都是在Overleaf上编译,这两天突然…

第十二届蓝桥杯省赛真题 Java A 组【原卷】

文章目录 发现宝藏【考生须知】试题 A: 相乘试题 B: 直线试题 C : \mathrm{C}: C: 货物摆放试题 D: 路径试题 E: 回路计数试题 F : \mathrm{F}: F: 最少砝码试题 G: 左孩子右兄弟试题 H : \mathrm{H}: H: 异或数列试题 I \mathbf{I} I 双向排序试题 J : \mathrm{J}: J: 分…

electron进程间通信

Electron 应用程序的结构非常相似。 作为应用开发者,你将控制两种类型的进程:主进程 和 渲染器进程。 这类似于上文所述的 Chrome 的浏览器和渲染器进程。 主进程 每个 Electron 应用都有一个单一的主进程,作为应用程序的入口点。 主进程在 N…

STM32快速入门(总线协议之I2C一主多从(软件实现 硬件实现))

STM32快速入门(总线协议之I2C一主多从(软件实现 & 硬件实现)) 前言 支持一对多(一主多从)、多对多传输(多主多从),只支持半双工,一般有两根数据线&…

蓝桥之链表

最近真的特别焦虑,体测、比赛和考试一个接一个,让人喘不过气来QAQ 甚至考试和比赛还有冲突,sad 最近因为看了牙,打了药的缘故,一直在吃素QAQ 本来今天还想写个知识点总结的,但是太晚了,现在已…

吃透前端文件上传与文件相关操作

最近在学文件上传的操作,所以想把学习到东西写成一文章 这片文章是我以小白视角 慢慢学习并熟悉前端文件相关操作的流程总结出来的 前端文件上传 我首先想到是 <input type"file">选择文件</input>如果我们想限制上传文件的格式,大小或进行裁剪分片上传…

2022——蓝桥杯十三届2022国赛大学B组真题

问题分析 看到这个问题的同学很容易想到用十层循环暴力计算&#xff0c;反正是道填空题&#xff0c;一直算总能算得出来的&#xff0c;还有些同学可能觉得十层循环太恐怖了&#xff0c;写成回溯更简洁一点。像下面这样 #include <bits/stdc.h> using namespace std; in…

树莓派4B-搭建一个本地车牌识别服务器

实现目标&#xff1a; 一、设备自启后能够获得服务的ip与端口号&#xff0c;用于计算机连接设备&#xff1b; 二、计算机可以通过服务ip与端口访问设备服务&#xff1b; 三、上传需要处理的数据&#xff0c;返回结果反馈给用户&#xff1b; 四、上传到服务器的数据不会导致设备…

Study--Oracle-02-单实例部署Oracle19C

一、CentOS 7 环境准备 1、软件准备 操作系统&#xff1a;CentOS 7 数据库版本: Oracle19C 2、操作系统环境配置 关闭selinux &#xff0c;编辑 /etc/selinux/config文件&#xff0c;设置SELINUX enforcing 为SELINUXdisabled [rootoracle ~]# grep SELINUX /etc/seli…

手游掘金最新玩法,单条视频变现1w+,一部手机即可操作,保姆级教程

如果你也想通过手机赚钱&#xff0c;在这里有一个非常好的项目&#xff0c;它可以让你轻松赚到额外的收入。 这个手游掘金最新玩法&#xff0c;是一个非常受欢迎的项目&#xff0c;它可以让你通过制作单条视频来获得高额收益。不同于传统的游戏赚钱方式&#xff0c;这个方法不…

HTML表单创建学习

文章目录 1、创建HTML框架2.body标签CSS3.表单创建3.1、添加fieldset与label标签3.2、为label标签添加css样式3.3、添加input标签3.4、添加提交按钮3.5、在input标签中添加required3.6、添加minlength属性3.7、pattern属性3.8、设置表单单选按钮无法同时选中3.9、添加链接3.10、…

SpringSecurity的核心原理使用总结

1. SpringSecurity的核心原理 对于最原始Servlet请求处理的层次结构 客户端->过滤器链->Servlet 对于在SpringMVC中处理请求的层次结构 如何让Filter与Spring建立连接呢? 因此它增加了一个DelegatingFilterProxy 它是SpringMVC提供的的Filter,它内部代理了一个原生的F…

HC-06 蓝牙串口从机 AT 命令详解

HC-06 蓝牙串口从机 AT 命令详解 要使用 AT 命令&#xff0c;首先要知道 HC-06 的波特率&#xff0c;然后要进入 AT 命令模式。 使用串口一定要知道三要素&#xff0c;一是波特率&#xff0c;二是串口号&#xff0c;三是数据格式, HC-06只支持一种数据格式: 数据位8 位&#…