lombok常用的注解及使用方法

news/2024/11/29 22:29:54/

lombok是⼀种简化源码提⾼编程效率的⼯具,⽤于⽣成常⽤的代码。

如何使用lombok

引⼊依赖           

            <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency>

安装插件

1、打开IDEA左上角File —> Settings ——>Plugins

常用注解汇总

@val                声明变量时能自行推断变量类型, 并且自带 final 属性,

@Data             @ToString、@EqualsAndHashCode、

                        @Getter、@Setter和 @RequiredArgsConstrutor

@Slf4j             生成 log 对象

@Value            与 @Data 类似, 有以下两点区别:

                        生成的是全参的构造器;

                        只有 getter 方法, 没有 setter 方法;

@Getter           所有属性的Getter方法

@Setter           所有属性的Setter方法

@Builder         生成链式构造器的代码

@Cleanup       安全释放或者关闭资源, 最常见的场景就是 IO 中关闭流的操作

@NonNull

                        getter : 如果获取出来属性为 null, 则抛出 NPE

                        setter : 如果设置属性时, 传入的值为 null, 则抛出 NPE

@ToString        生成 toString() 方法

@SneakyThrows        将抛出的异常吃掉, 减少一些不必要的 try catch 代码

@NoArgsConstructor        生成一个无参构造方法

@AllArgsConstructor        添加一个包含所有属性的Constructor

@EqualsAndHashCode        生成 equals() 和 hashcode() 方法

@RequiredArgsConstrutor        会生成一个包含常量,和标识了NotNull的变量的构造方法

案例

被注释的部分是lombok会帮助我们自动生成的代码。

@Slf4j
@Slf4j
public class Test {// private static final Logger log=LoggerFactory.getLogger(Test.class);public static void main(String[] args) {log.info("Hello world");}
}
@BuilderTest test = Test.builder().id(id).page(page).build();@Data
@Builder
public class Test {private String id;private String page;/**@java.beans.ConstructorProperties({"id", "page"})Test(Long id, int page) {this.id = id;this.page = page;}public static TestBuilder builder() {return new TestBuilder();}public TestBuilder toBuilder() {return new TestBuilder().id(this.id).page(this.page);}public static class TestBuilder {private Long id;private int page;TestBuilder() {}public TestBuilder id(Long id) {this.id = id;return this;}public TestBuilder page(int page) {this.page = page;return this;}public Test build() {return new Test(id, page);}public String toString() {return "Test.TestBuilder(id=" + this.id + ", page="+ this.page")";}*/
}
@SneakyThrows@Test(expected = RuntimeException.class)@SneakyThrowspublic void test_throw_exception() {when(HttpClientUtil.get(anyString()).thenThrow(new RuntimeException());api.test("nice");}
@Data
@Data
public class User {private Long id;private String username;private String password;/**public User() {}public Long getId() {return this.id;}public String getUsername() {return this.username;}public String getPassword() {return this.password;}public void setId(Long id) {this.id = id; }public void setUsername(String username) {this.username = username; }public void setPassword(String password) {this.password = password; }public boolean equals(Object o) {if (o == this) { return true; }...return true;}public int hashCode() {final int PRIME = 59;int result = 1;final Object $id = this.getId();result = result * PRIME + ($id == null ? 43 : $id.hashCode());final Object $username = this.getUsername();...return result;}protected boolean canEqual(Object other) {return other instanceof User;}public String toString() {return "User(id=" + this.getId() + ...+ ")";}*/}
}
@Value
@Value
public class Test {(private final) Long id;(private final) String page;/**@java.beans.ConstructorProperties({"id", "page"})public Test(Long id, String page) {this.id = id;this.page = page;}public Long getId() {return this.id;}public String getPage() {return this.page;}public boolean equals(Object o) {if (o == this) { return true; }...return true;}public int hashCode() {final int PRIME = 59;int result = 1;final Object $id = this.getId();result = result * PRIME + ($id == null ? 43 : $id.hashCode());...return result;}public String toString() {return "Test.TestBuilder(id=" + this.id + ", page="+ this.page")";}*/
}

原文链接:https://blog.csdn.net/xue_xiaofei/article/details/128397765


http://www.ppmy.cn/news/61999.html

相关文章

gorm记一次“mysql写入 Error 1366 (HY000): Incorrect string value”错误

记一次“mysql写入 Error 1366 (HY000): Incorrect string value”错误 环境gogormdockermysql 写入数据库的内容为中文时提示Error 1366 (HY000): Incorrect string value: \xE6\x9D\x8E\xE7\x99\xBD for column nickName at row 1&#xff0c;原因是创建表时没有指定字符集…

word@论文后期优化和完善工作@页眉页脚页码@配置并导出pdf

文章目录 论文结构例 目录操作页眉页脚页眉样式检查所有页面的页眉添加横线 页码从第二页(封面后的一页)开始用罗马数字标页码 word导出pdf等其他格式额外配置带独立书签和目录打印pdf 最后的优化 论文结构 一篇规范的论文应该大致包括以下部分&#xff1a; 标题页&#xff1…

SeaweedFS学习笔记:Filer服务,目录与文件

文章目录 1. 介绍2. 用法2.1 生成配置文件2.2 启动 filer 3. 读写流程3.1 读取流程3.2 写入流程 4. Filer Store4.1 复杂度4.2 Filer的使用场景 5. 数据加密5.1 对Volume server的数据进行加密 1. 介绍 文件系统&#xff0c;一般都离不开目录和文件&#xff0c;当我们把Seawee…

MATLAB算法实战应用案例精讲-【人工智能】对比学习(概念篇)(补充篇)

目录 前言 几个高频面试题目 基于对比学习(ContrastiveLearning)的文本表示模型【为什么】能学到文本【相似】度&#xff1f; 为什么对比学习能学到很好的语义相似度&#xff1f; 那么如何评价这个表示空间的质量呢&#xff1f; 知识储备 监督学习和非监督学习 算法原理…

04-菜单维护 尚筹网

在【菜单维护】页面&#xff0c;通过树形结构&#xff0c;使用zTree显示整个菜单。 准备工作 一、在数据库创建菜单表&#xff1a; #使用project_rowd表 use project_rowd;#创建菜单的数据库表 create table t_menu (id int(11) not null auto_increment, pid int(11), nam…

IDEA沉浸式编程体验

前言 IntelliJ IDEA:前不久推出了一个新的概念Fleet编辑器。用过的人都知道&#xff0c;不过是模仿VScode整一套&#xff0c;但相比之下&#xff0c;fleet虽然在传统IDEA的基础上简约了不少&#xff0c;一旦打开智能模式&#xff0c;那内存占用刷一下就上去了&#xff0c;没个3…

【python学习】基础篇-文件与系统-写入内容到指定文件

利用文件对象提供的 write() 方法&#xff0c;可以向文件中写入内容。 语法格式如下: file.write(string) 其中&#xff0c;fle 为打开的文件对象: string 为要写入的字符串。 fopen(word.txt, a) # 以追加的方式打开文件 # 将信息写入文件 f.write("有时候你觉得特别难&…

TikTok数据报告要怎么看?

TikTok数据报告是一种分析和汇总TikTok平台上数据的报告&#xff0c;包含TikTok平台上的用户数据、视频数据、广告数据等。TK卖家每年可以通过分析TK数据报告来更好地了解受众和市场趋势&#xff0c;从而制定更加精准的营销策略和提升销售业绩。TikTok数据报告也可以帮助商家更…