lombok 基础注解之 @EqualsAndHashCode
最全的 lombok 注解详情(随着版本不定时更新)
一、注解介绍
作用于类,覆盖默认的 equals 和 hashCode
二、属性介绍
- exclude:通过该属性可以排除某些字段
- of:通过该属性可以限定计算某些字段
当 of 属性和 exclude 属性同时出现时,of 属性优先。在不久的将来两者将会被加上 @Deprecated(不建议使用,有更好的替代) - callSuper:是否需要调用父类的方法,默认为 false
- doNotUseGetters:是否调用 getter 方法获取属性值,false 表示调用,默认 false
- cacheStrategy:是否缓存 hashcode,默认值 CacheStrategy.NEVER,不缓存
设置为 LAZY 时,第一次调用 hashcode 方法会对 hashcode 值进行缓存,下次再调用,返回缓存的 hashcode,无需重新计算 - onParam:列出的任何注解都放在生成的方法参数上
JDK 7 之前的写法是 onParam = @__({@NonNull}),而 JDK 8 之后的写法是 onParam_ = {@NonNull} - onlyExplicitlyIncluded:仅包含显式标记为 @EqualsAndHashCode.include 的字段和方法,默认为 false
- Include:配置在中呈现此成员的方式;如果在方法上,则在输出中包含该方法的返回值,of 属性的替代
Include 只有在 onlyExplicitlyIncluded = true 时才会生效,Include 标记在需要包含的属性或方法上
当 onlyExplicitlyIncluded = true 时,则必须搭配 Include 使用,否则不包含任何字段- replaces:
- rank:rank 表示该字段的优先级,值越大排在越前面,默认为 0
- Exclude:exclude 属性的替代
- of、exclude 属性不能与 onlyExplicitlyIncluded、Include、Exclude 同时出现
三、实战演练
@EqualsAndHashCode(exclude = {"age"}, of = {"name", "age"}, callSuper = false,doNotUseGetters = false, cacheStrategy = CacheStrategy.NEVER, onParam_ = {@NonNull}
)
public class ChenDuLing {private String name;private String age;
}
@EqualsAndHashCode(callSuper = false, doNotUseGetters = false, cacheStrategy = CacheStrategy.NEVER,onParam_ = {@NonNull}, onlyExplicitlyIncluded = true // onlyExplicitlyIncluded 默认值为 false
)
public class ChenDuLing {@EqualsAndHashCode.Include(replaces = "duling", rank = 0)private String name;@EqualsAndHashCode.Excludeprivate String age;
}
四、温馨提示
当 onlyExplicitlyIncluded = true 时需要搭配 @EqualsAndHashCode.Include 使用,这个时候就没有必要用 @EqualsAndHashCode.Exclude,因为字段不加 @EqualsAndHashCode.Include 将都不会比较
lombok 基础注解之 @EqualsAndHashCode相关推荐
- lombok 基础注解之 @Builder
最全的 lombok 注解详情(随着版本不定时更新) 一.注解介绍 @Builder 注解为类生成相对略微复杂的构建器 API 它作用于类,将其变成建造者模式 可以以链的形式调用 初始化实例对象生成的 ...
- lombok 基础注解之 @AllArgsConstructor
最全的 lombok 注解详情(随着版本不定时更新) 一.注解介绍 作用于类,生成一个参数为所有实例变量的构造方法 二.属性介绍 staticName:使生成的构造方法是私有的,默认值 "& ...
- lombok 基础注解之 @NonNull
最全的 lombok 注解详情(随着版本不定时更新) 一.注解介绍 作用于成员变量和参数中,标识变量不能为空,否则抛出空指针异常 二.实战演练 @Setter @Getter public class ...
- Lombok的注解简单介绍
Lombok的注解简单介绍 背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器.getter.setter.equals.hashcode.toStri ...
- 20190905 Lombok常用注解
Lombok常用注解 val 用于声明类型,将从初始化表达式推断出类型,仅适用于局部变量和foreach循环,而不适用于字段.声明的局部变量为final变量. Java自带类型推断随着JDK版本提升越 ...
- springboot依赖lombok插件、lombok常用注解
--springboot依赖lombok插件.lombok常用注解 1 lombok插件 1.1 lombok插件简介 官方介绍如下: 意思是:lombok是一个能自动插入到编辑器和构建工具的java ...
- Spring基础专题——第十章(基础注解编程——下)
目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个互联网职场小白到一个沪漂湿人,一路让我知道分享是一件多么重要的事情 ...
- Spring基础专题——第九章(基础注解编程——上)
目标,去年一年比较懒吧,所以今年我希望我的知识可以分享给正在奋斗中的互联网开发人员,以及未来想往架构师上走的道友们我们一起进步,从一个互联网职场小白到一个沪漂湿人,一路让我知道分享是一件多么重要的事情 ...
- Java基础-注解和反射
Java基础-注解和反射 前言 对于注解,我主要还是在自定义APT还有运行时反射获取类来让自己能够构建出复用性更高的代码逻辑. 知识点1-注解: 注解的应用场景由元注解@Retention来进行指定, ...
最新文章
- python functools import wraps_python装饰器中functools.wraps的作用详解
- [tensorflow] - csv文件读取
- shell--基本语法
- baseapp01: [S_ERROR]: [Account 40 => dbid 196]---------->call server client2base_xz Generate an err
- SLAM GMapping(8)重采样
- debian uefi legacy 区别_电脑硬盘格式有Legacy与UEFI,选择哪一个好?千万别选错了!...
- navicat安装指南
- 2016项目经验总结
- cf1299C-Water Balance
- c语言编程百分比,c – 计算百分比
- 如何从福彩官网抓取 双色球历史数据
- Java的“跨平台”特性
- Halcon根据两条线拟合中线
- ajax poker,《使命召唤15》大逃杀模式介绍 人物解锁方法一览
- Springboot+MySQL实现多数据源的信息导入
- 获取HTML页面的所有图片地址
- 无锡的太湖水臭了!!!
- 记一次el-select远程搜索默认数据回显问题
- 从计算云到云计算,云可造化万象
- python计算器小数点功能_Python 简单计算器实现
热门文章
- 51单片机入门篇-LED点亮以及流水灯
- idea中web模块导入方法
- SpringCloud Alibaba 简介
- 百度地图多边形覆盖物,可自定义颜色、个数,并获取坐标。
- allegro查找元器件_Allegro快速定位元件
- spring运行报错--org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 73; cvc-elt.1: 找不到元素 bean的声明
- 单片机 C51 编程要点总结
- JDK1.7HashMap 为什么会产生死循环
- GEE数据集——PML_V2 0.1.7: 蒸散量与初级生产总值(GPP)耦合
- 0629正则表达式:基础