使用 Lombok 释放百行代码
1.1 简介
1.1.1 概述
Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注释,用来消除 Java 类中的大量样板代码。可以替换数百行代码从而产生干净,简洁且易于维护的 Java 类。Lombok 也存在一定风险,在一些开发工具商店中没有 Project Lombok 支持选择。 IDE 和 JDK 升级存在破裂的风险,并且围绕项目的目标和实施存在争议。
1.1.2 相关依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
1.1.3 IDEA 使用 Lombok
想要使用 Lombok 必须要使用支持 Lombok 的开发工具,此处以 IDEA 为例,IDEA 必须要安装相关插件才能使用 Lombok,其他开发工具类似。
1.2 简单实用
1.2.1 常用注解
注解 |
说明 |
---|---|
@Setter |
注解在类或字段,注解在类时为所有字段生成 setter 方法,注解在字段上时只为该字段生成 setter 方法 |
@Getter |
使用方法同上,区别在于生成的是 getter 方法。需要注意的是 Boolean 生成的是 isXxx 不是 getXxx |
@ToString |
注解在类,添加 toString 方法 |
@EqualsAndHashCode |
注解在类,生成 hashCode 和 equals 方法 |
@NoArgsConstructor |
注解在类,生成无参的构造方法 |
@RequiredArgsConstructor |
注解在类,为类中需要特殊处理的字段生成构造方法,比如 final 和被 @NonNull 注解的字段 |
@AllArgsConstructor |
注解在类,生成包含类中所有字段的构造方法 |
@Data【常用】 |
注解在类,生成 setter/getter、equals、canEqual、hashCode、toString 方法,如为 final 属性,则不会为该属性生成 setter 方法 |
@Slf4j |
注解在类,生成 log 变量,严格意义来说是常量 |
1.2.2 示例
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/9/10
* @description Lombok 示例
*/
@Data
public class Student {
private Long id;
private String name;
private Integer age;
private Date birDate;
private String birStr;
}
1.2.4 自定义 setter/getter
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/9/10
* @description 自定义 setter/getter
*/
@Data
public class Student {
private Long id;
private String name;
private Integer age;
private Date birDate;
private String birStr;
/*
* 会使用此处的 setter/getter,lombok 不会再生成对应的方法
*/
public Date getBirDate() {
return birDate;
}
public void setBirDate(Date birDate) {
this.birDate = birDate;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
this.birStr = sdf.format(birDate);
}
public String getBirStr() {
return birStr;
}
public void setBirStr(String birStr) {
this.birStr = birStr;
}
}
/**
* Created with IntelliJ IDEA.
*
* @author Demo_Null
* @date 2020/9/10
* @description 测试
*/
public class Demo {
public static void main(String[] args) {
Student student = new Student();
student.setBirDate(new Date());
student.setName("张三");
System.out.println(student);
}
}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 每天手撕一道算法题-130. 被围绕的区域
- C#实现前向最大匹、字典树(分词、检索)
- Tomcat 中文乱码,设置UTF-8
- 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper
- IDEA将Maven项目中指定文件夹下的xml等文件编译进classes
- 数据误操作,教你使用ApexSQLLog工具从 SQLServer日志恢复数据!
- 从零搭建Spring Boot脚手架(5):整合 Mybatis Plus
- SQL Server数据库阻塞,死锁查询
- 如何优雅地写出大规模线性规划的对偶
- 数据库char varchar nchar nvarchar,编码Unicode,UTF8,GBK等,Sql语句中文前为什么加N(一次线上数据存储乱码排查)
- [Maven][maven-shade-plugin]告警[WARNING] maven-shade-plugin has detected that some class files are pre
- asp.net core 3.1多种身份验证方案,cookie和jwt混合认证授权
- 只知道java反射,宁知道内省吗?
- JDK1.8新特性(七):默认方法,真香,开动!接口?我要升级!!
- Windows10上安装Linux子系统(WSL2,Ubuntu),配合Windows Terminal使用,还要什么自行车