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 寄…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡
何谓AI编程【02】AI编程官网以优雅草星云智控为例建设实践-完善顶部-建立各项子页-调整排版-优雅草卓伊凡 背景 我们以建设星云智控官网来做AI编程实践,很多人以为AI已经强大到不需要程序员了,其实不是,AI更加需要程序员,普通人…...
C#中用于控制自定义特性(Attribute)
我们来详细解释一下 [AttributeUsage(AttributeTargets.Class, AllowMultiple false, Inherited false)] 这个 C# 属性。 在 C# 中,Attribute(特性)是一种用于向程序元素(如类、方法、属性等)添加元数据的机制。Attr…...
