【每天学个新注解】Day 2 Lombok注解简解(一)—@Data、@Build、@Value

@Data

相当于同时使用了 @Getter 、@Setter 、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode

1、如何使用

  • 需要同时使用@Getter 、@Setter 、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode注解一个Bean的时候。

2、代码示例

例:

@Data
public class People {private String name;private int age;private String sex;
}

@Builder

帮助我们简化 Builder 模式的实现过程
Builder模式(创建者模式):创建型设计模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,提供一种通过链式方法来创建一个复杂的对象。

1、如何使用

  • 注解在类上,会生成一个名为builder的静态方法以及各属性的链式设置方法,最后通过 build 方法来构建对象。
  • 在构造函数上使用 @Builder 注解,可以控制哪些字段需要在 builder 中出现。比如,我们可能有一个包含很多字段的类,但只希望部分字段可以通过 builder 来设置。
  • 字段在 builder 模式中有默认值,我们可以在构造函数中设置。

2、代码示例

例:

@Builder
@ToString
public class People {private String name;private int age;private String sex;
}

那么创建对象时就可以通过builder静态方法实现

public class Test {public static void main(String[] args) {People p = People.builder().name("tom").age(18).sex("男").build();System.out.printf(p.toString() + "\n");}
}

在这里插入图片描述
例:

@ToString
public class People {private String name;private int age;private String sex;@Builderpublic People(String name, int age, String sex) {this.name = name;this.age = age;this.sex = (sex==null)?"未知":sex;}
}		

那么创建对象时就可以通过builder静态方法实现

public class Test {public static void main(String[] args) {People p = People.builder().name("tom").age(18).build();System.out.printf(p.toString() + "\n");}
}

当不设置sex的值时,可以通过默认值取到“未知”。
在这里插入图片描述

@Value

创建不可变类
不可变类的特点是它的状态在对象创建后不能被修改,这在多线程环境中尤其有用。

1、如何使用

  • 需要创建不可变类的时候,在类上添加该注解。
  • @Value 注解是 @Data 的不可变版本,自动生成所有字段的 getter 方法、toString 方法、equals 和 hashCode 方法,以及一个全参数的构造函数,并将所有字段设为 private 和 final。

2、代码示例

例:

@Value
public class People {private String name;private int age;private String sex;
}

编译后:

import lombok.Generated;public final class People {private final String name;private final int age;private final String sex;@Generatedpublic People(String name, int age, String sex) {this.name = name;this.age = age;this.sex = sex;}@Generatedpublic String getName() {return this.name;}@Generatedpublic int getAge() {return this.age;}@Generatedpublic String getSex() {return this.sex;}@Generatedpublic boolean equals(Object o) {if (o == this) {return true;} else if (!(o instanceof People)) {return false;} else {People other = (People)o;if (this.getAge() != other.getAge()) {return false;} else {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name != null) {return false;}} else if (!this$name.equals(other$name)) {return false;}Object this$sex = this.getSex();Object other$sex = other.getSex();if (this$sex == null) {if (other$sex != null) {return false;}} else if (!this$sex.equals(other$sex)) {return false;}return true;}}}@Generatedpublic int hashCode() {int PRIME = true;int result = 1;int result = result * 59 + this.getAge();Object $name = this.getName();result = result * 59 + ($name == null ? 43 : $name.hashCode());Object $sex = this.getSex();result = result * 59 + ($sex == null ? 43 : $sex.hashCode());return result;}@Generatedpublic String toString() {return "People(name=" + this.getName() + ", age=" + this.getAge() + ", sex=" + this.getSex() + ")";}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1542501.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

CCC SPAKE2+流程解析

1、SPAKE2流程及SCP03通道介绍 SPAKE2流程发生在CCC车主配对过程中的Phase2。 SPAKE2流程为车辆和手机之间的数据交换建立了一个安全通道SCP03。 那这个SCP03通道是干啥的? 我们可以先简单的理解为:建立安全通道前,车辆和手机之间交互的AP…

剖解反转链表

剖解反转链表 思路: 1.若链表为空或者只存在一个节点,就无需反转,直接返回head 2.若存在多个节点 首先将head.next给到cur,并将head.next置为null 剩余的节点就利用头插法,反转链表 class Solution {public ListNo…

基于SpringBoot+Vue+MySQL的特色旅游网站系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着旅游业的蓬勃发展,人们对旅游体验的需求日益多样化与个性化。传统的旅游信息查询与预订方式已难以满足现代游客的需求。因此,我们开发了这款基于SpringBootVueMySQL的特色旅游网站系统。该系统旨在通…

MySQL高阶1917-Leetcodify好友推荐

目录 题目 准备数据 分析数据 总结 题目 为 Leetcodify 用户推荐好友。我们将符合下列条件的用户 x 推荐给用户 y : 用户 x 和 y 不是好友,且用户 x 和 y 在同一天收听了相同的三首或更多不同歌曲。 注意,好友推荐是单向的&#xff0c…

web前端字段大小写下划线转换工具

文章目录 前言一、如何使用?二、相关代码总结 前言 程序员在敲代码的过程中都要命名一些字段,但是Java语言对字段的命名规范和sql命名规范不一样,如下图所示,这种机械性的转换工作很劳神费力,为了省点劲写了一个web小…

pdf怎么编辑修改内容?试试这四款工具!

作为一个经常探索各种办公软件的人,今天我打算和大家聊聊一个我们工作中经常会遇到的问题——编辑PDF文件。我们都知道,PDF文件以其格式稳定、不易被篡改而受到青睐,但这也意味着一旦需要修改内容,就变得相当棘手。不过&#xff0…

设计模式之类结构模式例题

答案:B A 知识点: 设计模式中类结构模式分别是:工厂方法模式,适配器模式,模板方法模式,解释器模式 记忆方法:公司里有个模特小姐姐,公是工厂模式,司是适配器模式&…

Mapper代理

文章目录 Mapper代理路径一定要写对Mapper代理方式加载配置文件 (包扫描的方式) Mapper代理 好像就是能 包名.方法。 反正就是防止硬编码,更灵活,更适用。 路径一定要写对 Mapper代理方式加载配置文件 (包扫描的方式…

fiddler抓包08_抓Android手机请求

课程大纲 手机抓包,电脑端的设置和IOS端相同,设置一次即可,无需重复设置。 前提:电脑和手机连接同一个局域网 土小帽电脑和手机都连了自己的无线网“tuxiaomao”。 Step1. 电脑端设置 ① 打开Fiddler - 开启抓包(F12…

Windows下如何定时执行自定义任务

目录 一.前言二.设置定时自动执行自定义任务 一.前言 本文环境是Windows11系统。 有时候我们希望能够在Windows下定时自动执行自定义任务,比如检测数据库服务的状态。那在Windows下怎么定时自动执行自定义任务,这篇文章介绍一种方法。 二.设置定时自动…

计算机毕业设计推荐-基于python的电子图书阅读推荐平台【源码+文档+讲解】

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于python的电子图书阅读推…

吴津雨银洁刘雅雯获得国际超模大赛四川总决赛网络组三甲

9月8日众人期盼已久的都江堰杯2024国际超模大赛四川总决赛在三遗之城都江堰落下帷幕。国际超模大赛已经举办第12个年头,每年为时尚界、模特界输送无数的优秀时尚模特人才,让世界超模中出现更多的中国面孔。大赛在全球已经布局多个国家及地区,…

项目第七弹:消费者管理模块

项目第七弹:消费者管理模块 一、为何要有这个模块?二、消费者是否需要持久化?三、怎么设计?1.如何抽象描述?1.回想一下基于生产消费模型的线程池2.如何组织3.消息处理与确认问题的解决4.自动确认标志5.消费者代码 2.队…

【计算机组成原理】主存储器深度解析

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

DETR论文翻译与理解

DETR(Detection with transformer) DETR:End to End Object Detection with Transformer 论文链接:2005.12872 (arxiv.org) 参考视频:https://www.bilibili.com/video/BV1GB4y1X72R/?spm_id_from333.788&vd_…

JBoss反序列化漏洞CVE-2017-12149

1.环境搭建 cd vulhub-master/jboss/CVE-2017-12149 docker-compose up -d 2.访问漏洞地址 3.漏洞验证 http://47.121.211.205:8080/invoker/readonly 返回500说明漏洞存在 4.使用漏洞进行利用 直接执行命令

人脸识别换装技术实现记录-1

最近,研究了下人脸识别换装,确定了技术方案和技术路线,并最终实现了想要达成的效果,现将制作过程中遇到的问题以及实现的过程记录下来,以便回顾总结的同时,也和其他想实现人脸识别换装的同学分享下经验,避免踩坑。 本项目主要是在Android系统上实现人脸换装的效…

简单图解一下线性注意力机制

知乎:刀刀宁链接:https://zhuanlan.zhihu.com/p/718156896 线性注意力机制的文章有很多了,在本篇笔记中,我们简单地对各种方法进行一下图解比较,串一下当前的线性注意力机制,涉及的公式极少,主要…

【Python从入门到进阶】65、Pandas如何批量拆分与合并Excel文件

接上篇《64、Pandas如何实现数据的Concat合并》 上一篇我们学习了Pandas如何实现数据的Concat合并,本篇我们来继续学习Pandas如何批量拆分与合并Excel文件。 一、引言 在当今数据驱动的时代,Excel文件作为数据处理和分析的基石,扮演着不可或…

【YOLO目标检测手势识别数据集】共55952张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式:YOLO格式 图片数量:55952 标注数量(txt文件个数):55952 标注类别数:7 标注类别名称: one two three four five good ok 数据集下载:手势识别数据集 图片示例 数…