当前位置:网站首页>lombok 下的@Builder和@EqualsAndHashCode(callSuper = true)注解
lombok 下的@Builder和@EqualsAndHashCode(callSuper = true)注解
2022-08-03 01:00:00 【一条小咸鱼i】
pom依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.10.2</version>
</dependency>
java~lombok里的Builder注解
lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Builder方法,它提供在设计数据实体时,对外保持private setter,而对属性的赋值采用Builder的方式,这种方式最优雅,也更符合封装的原则,不对外公开属性的写操作!
@Builder声明实体,表示可以进行Builder方式初始化,@Value注解,表示只公开getter,对所有属性的setter都封闭,即private修饰,所以它不能和@Builder现起用
一般地,我们可以这样设计实体!
@Builder(toBuilder = true)
@Getter
public class UserInfo {
private String name;
private String email;
@MinMoney(message = "金额不能小于0.")
@MaxMoney(value = 10, message = "金额不能大于10.")
private Money price;
}
@Builder注解赋值新对象
UserInfo userInfo = UserInfo.builder()
.name("zzl")
.email("[email protected]")
.build();
@Builder注解修改原对象的属性值
修改实体,要求实体上添加@Builder(toBuilder=true)
userInfo = userInfo.toBuilder()
.name("OK")
.email("[email protected]")
.build();
2、Lombok—@EqualsAndHashCode(callSuper = true)的使用
加了该注解 son执行equals()方法时会比较父类属性是否一致,不加只比较子类属性。默认为false。
如:
边栏推荐
猜你喜欢

10大领域5大过程47子过程快速记忆
![[NCTF2019]SQLi-1||SQL注入](/img/18/6483cd9d5d2722860652fea193c13a.png)
[NCTF2019]SQLi-1||SQL注入

20、商品微服务-web层实现

Violent recursion to dynamic programming 06 (the sword refers to Offer II 095. Longest common subsequence)

js显示隐藏手机号

高并发基石:多线程、守护线程、线程安全、线程同步、互斥锁,一文扫尽!...

2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,

【飞控开发高级教程1】疯壳·开源编队无人机-飞控整机代码走读、编译与烧写

暴力递归到动态规划 07(516. 最长回文子序列)

async-await
随机推荐
投资的思考
北路智控上市首日破发:公司市值59亿 募资15.6亿
一个接口并发问题的模拟与复现
.NET in-depth analysis of the LINQ framework (four: IQueryable, IQueryProvider interface details)
软件定义网络实验之自定义拓扑开发
UVM中SVA使用指南
作业8.2 线程同步互斥机制——互斥锁
20、商品微服务-web层实现
mysql容器数据卷持久化
从一文中了解SSRF的各种绕过姿势及攻击思路
GTK实现水波纹效果
接口流量突增,如何做好性能优化?
[NCTF2019]SQLi-1||SQL注入
Guidelines for the use of SVA in UVM
优秀的 Verilog/FPGA开源项目总结及交流群
1686. 石子游戏 VI
风电场运营实践 | 麒麟信安助力国华投资山东公司集控中心实现安全智慧化运营
嵌入式开发:嵌入式基础——’ ’和” ”的区别
PyCharm中常用的快捷键用法详解
新库上线 | CnOpenDataA股上市公司董监高信息数据