代码精简工具lombok
Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get、set以及构造方法等的Java库
一、安装Lombok
步骤一 项目引入lombok插件
1 - 非maven依赖托管项目再lib文件夹中添加lombok.jar包
2 - maven项目直接在项目pom.xml文件夹添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.12</version>
</dependency>
步骤二 在Intellij idea或者Eclipse集成lombok插件让他们可以识别lombok
Intellij idea
方式一、进入plugins->Browse repositories->输入Lombok搜索插件,点击install下载,这种方式目前尝试过,下载失败
方式二、进入github,搜索lombok for Intellij插件选择Intellij idea对应版本的插件下载zip包,把解压后的文件放到Intellij idea安装目录的插件库即plugins文件夹下
二、使用教程
1 - @Data注解作用于类中,相当于同时加入@Getter@Setter@ToString @EqualsAndHashCode
@Data
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
2 - @Getter@Setter 可在类和成员变量上使用,注解作用于属性上用于自动生成get、set方法
public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;
@Setter
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
3 - @NonNull该注解用于判断是否为空,如果调用set方法设置为空则抛出java.lang.NullPointerException
public class UserInfoDTO implements Serializable{
/**用户编号**/
@Getter
private Long uid;
@Setter@NonNull
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
4 - @Synchronized该注解作用与方法自动添加同步机制,生成的源码显示生成的方法并不直接锁方法而是锁该方法下的代码块,锁是对象锁
5 -@ToString注解主要是作用于ToString方法,里面可以设置多个属性
callSuper 是否输出父类的toString方法
includeFieldNames 是否包含字段名称,默认为true
exclude排除生成的toString字段
@Getter
@Setter
@ToString(callSuper = false, includeFieldNames = true, exclude = "uid")
public class UserInfoDTO implements Serializable{
/**用户编号**/
private Long uid;
/**用户姓名**/
private String uname;
/**年龄**/
private Integer age;
}
lombok生成的等价源码
public class UserInfoDTO implements Serializable {
private Long uid;
private String uname;
private Integer age;
public UserInfoDTO() {
}
public Long getUid() {
return this.uid;
}
public String getUname() {
return this.uname;
}
public Integer getAge() {
return this.age;
}
public void setUid(Long uid) {
this.uid = uid;
}
public void setUname(String uname) {
this.uname = uname;
}
public void setAge(Integer age) {
this.age = age;
}
public String toString() {
return "UserInfoDTO(uname=" + this.getUname() + ", age=" + this.getAge() + ")";
}
}
@Cleanup该注解用于确保已分配的资源被释放,例如IO连接的关闭
public static void testCleanUp(){
try{
@Cleanup FileOutputStream bos = new FileOutputStream("test.txt");
bos.write(new byte[]{'A','B','C'});
}catch(IOException ex){
}
}
lombok生成的等价源码
public static void testCleanUp() {
try {
FileOutputStream bos = new FileOutputStream("test.txt");
try {
bos.write(new byte[]{65, 66, 67});
} finally {
if(Collections.singletonList(bos).get(0) != null) {
bos.close();
}
}
} catch (IOException var5) {
;
}
}
看不懂为什么要先把文件输出流对象放到一个单例集合里面再去获取它进行判空
代码精简工具lombok的更多相关文章
- 代码精简之Lombok
JavaWeb项目开发中,JavaBean总是不可避免的出现,随之而来的就是大量的getter.setter方法,虽然大部分的开发工具(比如Eclipse等)都支持自动生成这些东西,但是一旦Bean里 ...
- Java 代码精简
Java 代码精简 利用语法 利用三元表达式 普通 String title; if (isMember(phone)) { title = "会员"; } else { titl ...
- 基于IDEA工具 lombok 的使用
一.简介 Lombok 是一种 Java™ 实用工具,可用来帮助开发人员消除 Java 的冗长,尤其是对于简单的 Java 对象(POJO).它通过注解实现这一目的. 二.lombok的添加和常用注解 ...
- Python实现C代码统计工具(三)
目录 Python实现C代码统计工具(三) 声明 一. 性能分析 1.1 分析单条语句 1.2 分析代码片段 1.3 分析整个模块 二. 制作exe Python实现C代码统计工具(三) 标签: Py ...
- JavaBean的实用工具Lombok(省去get、set等方法)
转:https://blog.csdn.net/ghsau/article/details/52334762 背景 我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性 ...
- C++ 代码静态分析工具cppcheck【转】
转自:http://blog.csdn.net/chen19870707/article/details/42393217 权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] c ...
- Java效率工具Lombok使用与原理
Java效率工具Lombok使用与原理 我个人觉得 Lombok是一个优化Java代码以及提升开发效率不错的工具.Lombok 的Github地址为:https://github.com/rzwits ...
- 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重要
摘要 12款为用户精心打造的Idea插件,含盖前后端,另把使用小技巧分享给大家,提高大家的码率,希望对你们有帮助! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有 ...
- Android代码分析工具lint学习
1 lint简介 1.1 概述 lint是随Android SDK自带的一个静态代码分析工具.它用来对Android工程的源文件进行检查,找出在正确性.安全.性能.可使用性.可访问性及国际化等方面可能 ...
随机推荐
- 3 - Two Pointers Algorithm
5. Kth Largest Element (quick sort的变种) https://www.lintcode.com/problem/kth-largest-element/descript ...
- 在Mac os 10.11 下编译Berkeley caffe
安装各种补丁和组件,缺啥装啥. python 采用 2.7.13 最新版. 安装工具 homebrew , pip 很繁琐,但是没难度. 由于本人macbook pro不支持CUDA,所以不用安装. ...
- 关于list中移除某种数据类型的方法
众所周知,list在不泛型的情况下是可以存放各种数据类型的,代码如下: public static void main(String[] args) { List list=new ArrayList ...
- Shovel Sale CodeForces - 899D (数位dp)
大意: n把铲子, 价格1,2,3,...n, 求有多少个二元组(x,y), 满足x+y末尾数字9的个数最多. 枚举最高位, 转化为从[1,n]中选出多少个二元组和为$x$, 枚举较小的数 若$n\g ...
- C# T 泛型类,泛型方法的约束条件用法
class A<T> where T:new() 这是类型参数约束,where表名了对类型变量T的约束关系.where T:A 表示类型变量是继承于A的,或者是A本省.where T: n ...
- C#流程控制语句--跳转语句(break,continue,goto,return,)
跳转语句:是程序运行到某一位置时,可以跳到程序中另一个代码的语句.循环控制语句. 跳转语句:break 1.用于退出包含在最内层的循环或者退出一个switch或loop语句,程序流将继续紧接着loop ...
- multiThread (一)
并发系列(1)之 Thread 详解 阅读目录 一.线程概述 二.线程状态 三.源码分析 1. native注册 2. 构造方法和成员变量 3. start 方法 4. exit 方法 5. 弃用 ...
- ThinkPHP5.0源码学习之缓存Cache(一)
一.文件 1.缓存配置文件:thinkphp\convention.php 2.缓存文件:thinkphp\library\think\Cache.php 3.驱动目录:thinkphp\librar ...
- vim 插件 -- taglist
taglist 插件是基于ctags生成的tags文件一个工具.主要是用来生成当前文件的结构.如:函数名.变量名结构.具体如下图: 下载 https://www.vim.org/scripts/scr ...
- JAVA实现简单的四则运算
GitHub 项目地址 https://github.com/745421831/-/tree/master PSP PSP2.1 Personal Software Process Stages 预 ...