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 寄…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果,从而消除了直接物理连接的需要。USB over IP的…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
Win系统权限提升篇UAC绕过DLL劫持未引号路径可控服务全检项目
应用场景: 1、常规某个机器被钓鱼后门攻击后,我们需要做更高权限操作或权限维持等。 2、内网域中某个机器被钓鱼后门攻击后,我们需要对后续内网域做安全测试。 #Win10&11-BypassUAC自动提权-MSF&UACME 为了远程执行目标的exe或者b…...
Linux中INADDR_ANY详解
在Linux网络编程中,INADDR_ANY 是一个特殊的IPv4地址常量(定义在 <netinet/in.h> 头文件中),用于表示绑定到所有可用网络接口的地址。它是服务器程序中的常见用法,允许套接字监听所有本地IP地址上的连接请求。 关…...
