Lombok注解详解

文章目录

  • 注解详解
    • 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.mzph.cn/diannao/10944.shtml

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

相关文章

面试八股之Redis篇2——redis分布式锁

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

互联网引流艺术:精准获客的黄金法则

在如今这个信息爆炸的时代,互联网引流不再是简单地发布广告和等待潜在客户的到来。它变成了一门需要策略、技巧和持续创新的艺术。作为一位资深的互联网营销从业者,我深知精准推广的重要性,以及它在帮助企业获得理想客户中的关键作用。以下是…

用HAL库改写江科大的stm32入门例子_1、按键控制led灯

使用STM32CubeMX生成Keil工程并完成流水灯 ,就不重复了:直接参考: 使用STM32CubeMX生成Keil工程并完成流水灯 进入主题,用中断实现,操作步骤如下: 1 如下图设置PB11 管脚 2 设置PB11为下降沿中断: 3 PA…

java 动态代理详解

cglib 动态代理 介绍 CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB 是一…

【xrframe】优化ar相机中加载模型效果

方法一:定义渲染width和height //组件生命周期:在视图层布局完成后执行ready() {const info wx.getSystemInfoSync();//在小程序中同步获取系统信息const width info.windowWidth;//获取屏幕的宽度(单位为物理像素)const heigh…

PC适配移动端

**手机端适配** 媒体查询 组件统一样式 媒体查询写四套样式 手机 屏幕宽小于768px 平板 屏幕宽 大于等于768px 小于992px 桌面显示器 屏幕宽大于等于992px 小于1200px 大屏幕 屏幕宽大于等于1200px **页面整体及页面内容** 页面看是需要主PC还是主移动端 主移动端的话…

探索设计模式的魅力:权力集中,效率提升,中心化模式的优势与挑战

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索中心化模式之旅✨ 大家好啊!👋 这次我们要聊的是IT界一…

AI绘画动漫转真人详细教程

从小到大,我们看过的动漫、玩过的游戏有很多很多 但我们会发现里面的角色或者人物都是二次元的 我就会好奇这些动漫人物在现实中会长什么样 而现在,我们通过AI绘画竟然就能还原出来他们现实中的样子 除了动漫角色和游戏人物,古代的画像、经典…

day11-StreamFile

1.Stream流 1.1 体验Stream流 需求:按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"杨"开头的元素存储到一个新的集合 把"杨"开头的集合中的长度为3的元素存储到一个新的集合 遍历上一步得到…

【笔记】从零开始做一个男性人体的流程/躯干篇(超级详细)

躯干整体 大体 1.创建一个正方体,摆好位置 2.实例呀啥的都搞好 3.胸部它是一个前窄后宽的结构 斜方肌 臀部 1.臀部是前宽后窄的结构 2.我们再去侧面调整以下 胸椎向上倾斜,盆骨向下倾斜。脊椎是s形的 3.真实的身体没有这么方正,所以微调…

青少年软件编程(Python)等级考试试卷(三级)2024年3月

2024.03电子学会青少年软件编程(Python)等级考试试卷(三级) 一、单选题 1.在 Python 中,hex(2023)的功能是? ( ) A.将十进制数 2023 转化为十六进制数 B.将十进制数 2023 转化为八进制数 C.将十六进制数 2023…

第四步->手撕spring源码之bena注入实现和依赖

本步骤目标 上述几个步骤 定义和注册Bean (opens new window)、实例化Bean (opens new window),按照是否包含构造函数实现不同的实例化策略 (opens new window),那么在创建对象实例化这我们还缺少什么?其实还缺少一个关于类中是否有属性的问题…

Android 13.0 系统限制上网系列之iptables用IOemNetd实现app某个时间段禁止上网的功能实现

1.前言 在13.0的系统rom定制化开发中,对于系统限制网络的使用的这块需求开发中,在system中netd网络这块的产品需要中,会要求设置app某个时间段禁止上网的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现app某个时间段禁止上网的的相关功能,就是在…

ctfshow web274

web274 thinkphp框架序列化漏洞 EXP <?php namespace think; abstract class Model{protected $append[];private $data[];function __construct(){$this->append["lin">["ctf","show"]];$this->data["lin">new Req…

Linux is命令参数和选项

在Linux系统中&#xff0c;命令行是一个非常重要且强大的工具&#xff0c;能够通过命令来完成各种任务。在使用Linux命令时&#xff0c;命令通常会有一些参数和选项&#xff0c;它们可以对命令的行为进行指定和调整&#xff0c;让我们更灵活地使用命令。 首先&#xff0c;让我…

前端笔记-day02

文章目录 01-无序列表02-有序列表03-定义列表04-表格06-表格-合并单元格07-表单-input08-表单-input占位文本09-表单-单选框10-表单-上传多个文件11-表单-多选框12-表单-下拉菜单13-表单-文本域14-表单-label标签15-表单-按钮16-无语义-span和div17-字体实体19-注册登录页面 01…

JavaScript Dom 事件绑定与处理

JavaScript中的DOM事件是在HTML元素上发生的特定动作或事件。事件可以是鼠标点击、键盘按下、窗口调整大小等。JavaScript提供了一系列的方法来处理或绑定这些事件。 事件绑定 在JavaScript中&#xff0c;可以通过以下几种方法来绑定事件&#xff1a; 使用HTML属性&#xff1…

Gitee仓库创建与使用

Gitee仓库创建与使用 git config --global user.name 用户名 git config --global user.email 邮箱# 添加.gitignore git config --global core.excludesfile ~/.gitignore# 初始化仓库 cd myproject git init# 添加远程仓库&#xff0c;首次 git remote add origin https:…

LeetCode 题目 121:买卖股票的最佳时机

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任字节跳动数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python&#xff0c;欢迎探讨交流 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题…

MySQL优化-03索引

索引 一.索引的作用 一个索引就是一颗B树&#xff0c;索引让我们可以快速定位和扫描到我们想要的数据&#xff0c;增加查询速度。在一个select查询语句中最多用到一个二级索引&#xff0c;即使在where条件中使用了多个二级索引。 二.InnoDB存储引擎支持的索引 B树索引、哈希索…