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…

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

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

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

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

day11-StreamFile

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

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

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

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

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

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…

前端笔记-day02

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

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

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

“知识世界”项目的自动化测试

目录 1.项目介绍 1.1 项目功能介绍 2. 项目测试 2.1 需求分析 2.2 测试计划 2.3 设计测试用例 &#xff08;1&#xff09; 设计 登录 的测试用例 &#xff08;2&#xff09;设计 文章列表页 的测试用例 &#xff08;3&#xff09;设计 详情页 的测试用例 &#xff08…

车载测试系列:车载常见面试题

自我介绍项目介绍项目具体是怎么测试的&#xff1f;CANoe是怎么使用的&#xff1f;台架是怎么搭建的&#xff1f;台架怎么测试的&#xff1f;诊断服务是怎么测试的&#xff1f;功能寻址和物理寻找的区别10服务有什么会话&#xff1f;11服务怎么确定软件复位和硬件复位是什么&am…

Gauge32类型的数据转换成int类型的数据

提前编译号snmp的库 #include <iostream> #include <libsnmp.h>#include "snmp_pp/snmp_pp.h"#ifdef WIN32 #define strcasecmp _stricmp #endif#ifdef SNMP_PP_NAMESPACE using namespace Snmp_pp; #endifusing namespace std; using namespace Snmp_pp…

JAVA抽象类,接口与内部类,常用API知识总结

文章目录 抽象类和抽象方法抽象类的定义格式抽象方法的定义格式注意事项 接口定义和使用成员特点和类之间的关系新增JDK8新增方法JDK9新增方法 总结设计模式 内部类使用场景分类成员内部类获取内部类对象访问成员变量 静态内部类局部内部类匿名内部类格式使用场景 示例 常用API…

JVM内存信息分析

jmap安装使用 java - version 查看已安装jdk的版本 sudo apt-get install openjdk-11-jdk-headless 安装jmap jmap -version 验证是否安装成功 jmap -dump:live,formatb,filexxxx.hprof pid 导出jvm内存信息&#xff0c;pid一般为java进程id内存信息分析 strings xxx.phrof |…

459.重复的子字符串

给定一个非空的字符串&#xff0c;判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母&#xff0c;并且长度不超过10000。 示例 1: 输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba&q…

chap5 I/O管理

目录 一、I/O设备基本概念和分类 304 1.concept 2.classification &#xff08;1&#xff09;根据信息交换单位&#xff08;可能考&#xff09; 1)字符设备 2)块设备 &#xff08;2&#xff09;传输速率&#xff08;以下了解即可&#xff09; &#xff08;3&#xff09;…

R语言数据分析案例-股票可视化分析

一、数据整合的对象 # Loading necessary libraries library(readxl) library(dplyr)# Reading the data from Excel files data_1 <- read_excel("云南白药.xlsx") data_2 <- read_excel("冰山.xlsx")二、数据整合的代码 # Reading the data from…

OBS插件--音频采集

音频采集 音频采集是一款 源 插件,类似于OBS的win-capture/game-capture&#xff0c;允许从特定应用程序捕获音频&#xff0c;而不是捕获整个系统的音频。避免了因为特定音频的采集而需要引入第三方软件&#xff0c;而且时延也非常低。 下面截图演示下操作步骤&#xff1a; 首…