Lombok,你的开发效率神器!
目录
- 1. 简介
- 2.1 IntellJ IDEA 安装 Lombok
- 3. 使用
- 3.1 具体使用
- 3.2 常用注解
1. 简介
Lombok 是一种 Java 实用工具,可用来帮助开发人员消除 Java 代码的冗长,尤其是对于简单的 Java 对象(POJO),通过注解实现这一目的。
2.1 IntellJ IDEA 安装 Lombok
- 依次进入
File -> Settings ->Plugins
,然后搜索 Lombok 安装即可;
- 安装后提示重启 IDE 即可;
- 在需要使用的项目中加入 Lombok 编译支持,pom 文件中加入以下依赖;
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
3. 使用
3.1 具体使用
在需要的实体类中引入相关注解即可,如下图;
3.2 常用注解
@Data
注解在 类 上:给类的所有属性提供 get
和 set
方法,此外还有 equals、canEqual、hashCode、toString
方法以及 默认参数为空的构造方法;
@Setter
注解在 类 上:为该类所有属性均提供 set
方法,同时提供 默认构造方法;
注解在 属性 上:为该属性提供 set
方法,同时提供 默认构造方法;
@Getter
注解在 类 上:为该类所有属性均提供 get
方法,同时提供 默认构造方法;
注解在 属性 上:为该属性提供 get
方法,同时提供 默认构造方法;
@ToString
注解在 类 上:生成所有参数的 toString()
方法,同时提供 默认构造方法;
@Value
注解在 类 上:生成 get
方法,以及 equals、hashCode、toString
方法,同时提供 含所有参数的构造方法;
@AllArgsConstructor
注解在 类 上:为类提供一个 全参构造方法,但此时不再提供默认构造方法;
@NoArgsConstructor
注解在 类 上:为类提供一个 无参构造方法;
@RequiredArgsConstructor
注解在 类 上:使用类中所有带 @NonNull
注解的或带有 final
修饰的成员变量生成对应构造方法;
@NonNull
注解在 属性 上,自动生成一个关于该参数的非空检查,若参数为 null
,则抛出一个空指针异常,同时提供 默认构造方法;
@EqualsAndHashCode
注解在 类 上,生成 equals、canEquals、hasnCode
方法;
@Cleanup
注解在 变量 前,保证该变量代表的资源使用后自动关闭,默认调用资源的 close()
方法,若该资源有其它关闭方法,可用 @Cleanup("方法名")
来指定要调用的方法,同时提供 默认构造方法;
@Synchronized
注解在 类方法 或 实例方法:效果与 synchronized
关键字相同,区别在于锁对象不同,对于类方法和实例方法,synchronized
关键字的锁对象分别是 类的 class
对象和 this
对象,而 @Synchronized
的锁对象分别是 私有静态 final
对象 lock
和 私有 final
对象 lock
,也可以自己指定锁对象,同时提供默认构造方法;
@SneakyThrows
注解在 方法 上:将方法中的代码用 try-catch
语句包裹,捕获异常并在 catch
中用 Lombok.sneakyThrow(e)
将异常抛出,还可以用 @SneakyThrows(Exception.class)
的形式指定抛出异常类型,同时提供 默认构造方法;
@Log4j
注解在 类 上:为类提供一个属性名为 log
的 log4j
日志对象,同时提供 默认构造方法;
点击查看往期精彩内容
- 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 数组属性和方法
- 矩阵操作试题(C++/Python)——矩阵元素顺时针旋转
- Linux实用技巧——paste横向合并文件内容
- Julia简易教程——5_函数
- 矩阵操作试题(C++/Python)——矩阵元素逆时针旋转90度
- MapReduce工作笔记——Streaming输入input解压
- MapReduce工作笔记——Streaming输出output压缩
- Linux实用技巧——删除重复行
- python函数——os.path.join路径拼接(pjoin)
- python函数——pickle中的dump以及load
- python函数——Keras分词器Tokenizer
- python函数——序列预处理pad_sequences()序列填充
- MapReduce工作笔记——Streaming多路输出
- nuxt.js项目入门配置篇
- 高级综合工具StratusHLS学习笔记(4)
- 论文笔记&翻译——Enhanced LSTM for Natural Language Inference(ESIM)