Lombok常见用法总结
目录
- 一、下载和安装
- 二、常见注释
- (一)@Data
- (二)@Getter和@Setter
- (三)@NonNull和@NotNull(不常用)
- (四)@ToString(不常用)
- (五)@EqualsAndHashCode
- (六)@Cleanup(很实用但是很小众)
- (七)构造器注释@AllArgsConstructor和@NoArgsConstructor和@RequiredArgsConstructor
- (八)@Builder
- (九)@val
一、下载和安装
在idea中下载安装设置enable即可
二、常见注释
(一)@Data
注在类上, 是@ToString, @EqualsAndHashCode, @Getter, @Setter和@NoArgsConstructor的结合。
提供无参构造器,get方法,set方法,重写hashCode,equals,toString方法。
Aoo aoo = new Aoo();
aoo.setAttr3(true);
aoo.setAttr2("2222");
System.out.println(aoo.toString()+aoo.getAttr2());
Aoo aoo2 = new Aoo();
System.out.println(aoo.equals(aoo2)+"----");
@Data
public class Aoo {private String attr1;private String attr2;private boolean attr3;}
注意,@Data只提供无参构造器,没有全参构造器,如果需要无参构造器和全参构造器则需要将这几个注释同时使用
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Aoo {private String attr1;private String attr2;private boolean attr3;
}
(二)@Getter和@Setter
既可以用在类上,也可以用在单独的属性上。
// @Getter可以用在实体类上
// @Setter
public class Aoo {private String attr1;private String attr2;@Getter@Setterprivate boolean attr3;
}
如果类没有使用@Data,那么可以单独需要get和set方法的属性进行设置。
并且,如果使用了boolean 类的属性,那么使用的时候,如下:
Aoo aoo = new Aoo();
aoo.setAttr3(true);
// 这里不再是getAttr3(),而是isAttr3()
System.out.println(aoo.isAttr3());
所以,如果类已经标注了@Data,就不用再使用@Setter和@Getter了。
@Getter和@Setter可以设置访问级别(默认为public)(搞不懂的去回忆一下访问修饰符)
例如:@Setter(AccessLevel.PROTECTED)
- AccessLevel.PUBLIC, //所有类可以访问
- AccessLevel.MODULE, // 同模块的可以访问
- AccessLevel.PROTECTED, // 只有子类可以访问
- AccessLevel.PACKAGE,// 只有同包可以访问
- AccessLevel.PRIVATE, // 只有本类可以访问
- AccessLevel.NONE; // 都不让访问
(三)@NonNull和@NotNull(不常用)
将在方法/构造函数体的开头插入一个空检查,抛出一个带有参数名称的NullPointerException作为消息。
这两个真的不常用,我一般用@Validate来限制字段不能为空
(四)@ToString(不常用)
自定义对象的toString方法
其中有一个属性exclude,代表被排除的属性,toString的时候,排除该属性
其中还有一个属性of,代表被包含的属性,toString的时候,只需要那些属性
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true,exclude = "attr1")
public class Aoo {private String attr1;private String attr2;private boolean attr3;}
(五)@EqualsAndHashCode
重写equals和hashCodef方法,
其中的exclude属性代表需要排除的equals和hashcode的属性有哪些。
其中of属性代表需要计入的属性有哪些。
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(exclude = {"attr1","attr2"})
public class Aoo {private String attr1;private String attr2;private boolean attr3;}
注意:但是一般不怎么用这个,会在stream留里面自定义比较器
(六)@Cleanup(很实用但是很小众)
在用一些输入输出流需要在finally中关闭的时候,如果添加了这个注解,就可以不写fanally了
String file = "XXX/XXX/XXX.zip";
File file1 = new File(file);
try{// 如果此处使用了@Cleanup,就可以不写finally了,在流使用完后自动关闭@Cleanup FileInputStream fis = new FileInputStream(file1);int c;while ((c = fis.read()) > 0) {// 业务逻辑}
}catch{throw new XXXEXception("XXXXXXX");
}finally{fis.close();
}
(七)构造器注释@AllArgsConstructor和@NoArgsConstructor和@RequiredArgsConstructor
- @AllArgsConstructor 全参构造器,
- @NoArgsConstructor提供无参构造器
有一个很容易报错的点:如果一个类没有会成员变量,同时使用了@AllArgsConstructor和- - @NoArgsConstructor会报错构造器重复的错
- @RequiredArgsConstructor 生成带有所需参数的构造函数。
这个不常用
(八)@Builder
让实体类使用构造者模式创建对象
@Data
@Builder
public class Aoo {private String attr1;private String attr2;private boolean attr3;}
public static void main(String[] args){Aoo aoo = Aoo.builder().attr1("attr1").attr2("attr2").attr3(true).build();System.out.println(aoo+"----");}
(九)@val
类型将从初始化表达式中推断出来。
@val
public class Aoo {private void doIt(){// 类型将从初始化表达式中推断出来val name = "张三";val type = 2;System.out.println(name+type);}
}
相关文章:

Lombok常见用法总结
目录一、下载和安装二、常见注释(一)Data(二)Getter和Setter(三)NonNull和NotNull(不常用)(四)ToString(不常用)(五&#…...

【Ajax】异步通信
一.概述 概念:AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML 作用: 与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据 使用了AJAX和服务器进行通信,就可以使…...

近红外吸收荧光染料IR-808,IR-808 NH2,IR-808 amine,发射808nm 性质分享
中文名称:IR-808 氨基英文名称:IR-808 NH2,IR-808 amine,IR-808-NH2规格标准:10mg,25mg,50mgCAS:N/A产品描述:IR-808,发射808nm,酯溶性染料修饰氨…...

一图来看你需要拥有那些知识储备
技术实践 数据 关系型数据 MySQLSQLServerOraclePostgrSQLDB2 大数据存储 RedisMemcacheMongoDBHBaseHive 大数据处理 Hadoop 数据报表看板 DataGearGrafanaKibanaMetaBase 消息对列 Rabbit MQRock MQActive MQKafka 大数据搜索 SolrElasticSearchLucenHive 服务提…...

复位和时钟控制(RCC)
目录 复位 系统复位 电源复位 备份区复位 时钟控制 什么是时钟? 时钟来源 二级时钟源: 如何使用CubeMX配置时钟 复位 系统复位 当发生以下任一事件时,产生一个系统复位:1. NRST引脚上的低电平(外部复位) 2. 窗口看门狗计数终止(WWD…...
OpenWrt 专栏介绍00
文章目录OpenWrt 专栏介绍00专栏章节介绍关于联系方式OpenWrt 专栏介绍00 专栏章节介绍 本专栏主要从开发者角度,一步步深入理解OpenWrt开发流程,本专栏包含以下章节,内如如下: 01.OperWrt 环境搭建02.OperWrt 包管理系统03.Op…...
udk开发-稀里糊涂
一、EDK2简介 1.EDK2工作流 二、EDK2 Packages 1.Packages介绍 EDK2 Packages是一个容器,其中包含一组模块及模块的相关定义。每个Package是一个EDK2单元。 整个Project的源代码可以被分割成不同的Pkg。这样的设计不仅可以降低耦合性,还有利于分…...

Java之内部类
目录 一.内部类 1.什么是内部类 2.内部类存在的原因 3. 内部类的分类 4.内部类的作用 二.成员内部类 1.基本概念 2.成员内部类的注意点 1.成员内部类可以用private方法进行修饰 2.成员内部类可以直接访问外部类的私有属性 3.外部类可以通过对象访问内部类的私有属性 …...

【MyBatis】篇二.MyBatis查询与特殊SQL
文章目录1、MyBatis获取参数值case1-单个字面量类型的参数case2-多个字面量类型的参数case3-map集合类型的参数case4-实体类类型的参数case5-使用Param注解命名参数总结2、MyBatis的各种查询功能case1-查询结果是一个实体类对象case2-查询结果是一个List集合case3-查询单个数据…...
CE认证机构和CE证书的分类
目前,CE认证已普遍被应用在很多行业的商品中,也是企业商品进入欧洲市场的必备安全合格认证。在船舶海工行业中,也同样普遍应用,很多时候,对于规范中没有明确认证要求的设备或材料,而船舶将来还会去欧洲水域…...

Lesson 8.2 CART 分类树的建模流程与 sklearn 评估器参数详解
文章目录一、CART 决策树的分类流程1. CART 树的基本生长过程1.1 规则评估指标选取与设置1.2 决策树备选规则创建方法1.3 挑选最佳分类规则划分数据集1.4 决策树的生长过程2. CART 树的剪枝二、CART 分类树的 Scikit-Learn 快速实现方法与评估器参数详解1. CART 分类树的 sklea…...

【Unity】程序集Assembly模块化开发
笔者按:使用Unity版本为2021.3LTS,与其他版本或有异同。请仅做参考 一、简述。 本文是笔者在学习使用Unity引擎的过程中,产学研的一个笔记。由笔者根据官方文档Unity User Manual 2021.3 (LTS)/脚本/Unity 架构/脚本编译/程序集定义相关部分结…...
马尔可夫决策过程
1. 马尔可夫决策过程 马尔可夫决策过程不过是引入"决策"的马氏过程. Pij(a)P{Xn1j∣X0,a0,X1,a1,...,Xni,an1}P{Xnn1j∣Xni,ana}\begin{split} P_{ij}(a) & P\{X_{n1} j|X_0, a_0, X_1, a_1, ..., X_n i, a_n 1\} \\ &P\{X_n{n1} j|X_n i, a_n a\} \e…...

win11下载配置CIC Flowmeter环境并提取流量特征
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、下载CIC Flowmeter二、安装java、maven、gradle和IDEA1.java 1.82.maven3.gradle4.IDEA三、CICFlowMeter-master使用四、流量特征1.含义2.获取前言 配了一整…...

JDK如何判断自己是什么公司的
0x00 前言 因为一些事情,遇到了这样一个问题,JDK如何判断自己是什么公司编译的。因为不同的公司编译出来,涉及到是否商用收费的问题。 平时自己使用的时候,是不会考虑到JDK的编译公司是哪一个,都是直接拿起来用&#…...

大数据技术之HBase(二)HBase原理简介
一、HBase定义1.1 HBase定义HBase 是一种分布式、可扩展、支持海量数据存储的 NoSQL 数据库非结构化数据存储的数据库,基于列的模式存储。利用Hadoop HDFS作为其文件存储系统,写入性能很强,读取性能较差。利用Hadoop MapReduce来处理HBase中的…...

垒骰子(爆搜/DP)
动态规划方格取数垒骰子方格取数 题目描述 设有 NNN \times NNN 的方格图 (N≤9)(N \le 9)(N≤9),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 000。如下图所示(见样例): A0 0 0 0 0 0 0 00 0 13 0 …...

Telink之标准SDK的介绍_1
前提:常见的项目架构:应用层----》驱动层----》硬件层 1、软件组织架构 顶层⽂件夹( 8 个): algorithm,application,boot,common,drivers,proj_lib,stack,v…...

JNI内两种方式从C/C++中传递一维、二维、三维数组数据至Java层详细梳理
目录 0 前言 1 准备工作介绍 2 一维数组 2.1 return形式 2.2 参数形式 3 二维数组 3.1 return形式 3.2 参数形式 4 三维数组 4.1 return形式 4.2 参数形式 5 测试代码 6 结果说明 0 前言 就如之前我写过的一篇文章【JNI内形参从C代码中获取返回值并返回到Java层使…...
快递计费系统--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)
实例5:快递计费系统 快递行业高速发展,我们邮寄物品变得方便快捷。某快递点提供华东地区、华南地区、华北地区的寄件服务,其中华东地区编号为01、华南地区编号为02、华北地区编号为03,该快递点寄件价目表具体如表1所示。 表1 寄…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...