16

Lombok,嗯,真香香香香香香!

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzU4ODI1MjA3NQ%3D%3D&%3Bmid=2247485020&%3Bidx=1&%3Bsn=3c3405807f96a597398f513c48bb094e
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

iEfe2qU.jpg!web

 Lombok到底是什么?  

先看一下它的官网

AZ3Ejyb.png!web

英语懒得看?没关系。

它大致意思是:Lombok是一个很牛批的 插件 (本质是个 Java库 ),项目里一旦引入了Lombok神器之后,你项目中所有诸如:对象的构造函数、 equals() 方法,属性的 get()/set() 方法等等,这些没有技术含量的代码统统都不用写了,Lombok帮你搞定一切,全部帮你自动生成!

听起来好像是挺不错...

3iiQRjV.png!web

眼见为虚,代码为实,本文亲自尝试一下!

 项目中引入Lombok  

首先在项目的 pom.xml 中引入 Lombok 依赖:

除此之外,还要在IDE中安装Lombok插件,并配置:

QFFrAvA.jpg!web

接下来进行代码实验。

 爽!get/set不用写了  

以前我们写一个 POJO 对象时,比如定义一个课程 Course ,需要自己手动写上每个字段的 get()set() 方法,就像这样:

但是借助于Lombok,一切都变得优雅起来,代码篇幅省了一半

两个注解: @Getter@Setter 即可方便搞定。

 爽!new对象变得优雅了  

在没有用Lombok之前,我们假如想new一个对象,我们往往会这么做(以上面的 Course 类为例):

引进Lombok之后,我们只需要在 Course 类上用上 @Builder 注解:

Course 类对象的创建即可使用 链式表达 的方式 一行代码 完成:

看到这里,如果你学过 设计模式 中的 “建造者模式” 的话,一定能猜到 @Builder 注解就是一个典型的“建造者模式”的实现案例!

建造者模式的链式调用用起来实在是很爽!

 爽!构造函数不用写了  

一、全参构造器不用写了

当你在你的类上使用了Lombok的注解 AllArgsConstructor 时:

这时候你的类在编译后会自动生成一个无参构造函数,就像这样:

二、无参数构造器也不用写了

当你在你的类上使用了Lombok的注解 NoArgsConstructor 时:

这时候你的类在编译后会自动生成一个无参构造函数,就像这样:

三、部分参数构造器也不用写了

当你在你的类上使用了Lombok的注解 RequiredArgsConstructor 时:

这时候你的类在编译后会自动生成一个具备部分参数的构造函数,就像这样:

因为 name 字段定义成 final ,所以 Lombok 自动会帮你生成一个部分参数的构造器!!

 爽!null判空不用写了  

Lombok的 @NonNull 注解可以自动帮我们 避免空指针判断 。该注解作用在方法参数上,用于自动生成空值参数检查,比如:

但是有了Lombok之后,事情就变得简单了,一个注解搞定:

 爽!屁股不用擦了  

什么意思呢?

假如我们要读取一个 txt 文本文件,一般会这样写代码:

注意,这个文件句柄在使用完成之后是一定要手动 close 的,否则就有可能 资源泄漏

有了Lombok之后,这种擦屁股活儿统统不用干了,一个 @Cleanup 注解即可搞定

 爽!异常不用捕捉了  

比如我们打开一个 txt 文本文件:

这地方的 FileNotFoundException 异常,要么显式地在函数级抛出,要么就像上面一样 try/catch 内部消灭。

如果在编码时,不想处理这种繁杂的异常处理,你可以使用Lombok的 @SneakyThrows 注解进行简化,比如上面的代码就可以简化为:

这样你编码时就无需处理异常了。

必须 友情提示 的是:这样写你是爽了,但你很有可能会被队友 一顿暴打 ,因为别人调用你编写的函数,并不能显式的获知需要处理哪些异常,这样容易留坑!

3i6fIzE.gif

 还有很多 ...  

好了,受限于篇幅限制,抛砖引玉就到这里了。

上面列举了几个平时项目开发中使用非常频繁的Lombok注解,除此之外,还有诸如像:

  • @ToString :为类自动生成toString()方法

  • @EqualsAndHashCode :为类自动生成hashCode和equals实现

  • @Log :为类自动生成log日志记录

  • @Synchronized :为类方法或实例方法自动生成synchronized保护

等工具也是非常好用的,大家可以尝试在项目里用起来。

从此,代码5分钟,划水2小时不是梦。。。

iymAzyE.jpg!web

每天进步一点点!Peace!

2020.01.08晚

给个[ 在看 ],是对程序羊最大的支持


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK