转载

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

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

 Lombok到底是什么?  

先看一下它的官网

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

英语懒得看?没关系。

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

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

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

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

 项目中引入Lombok  

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

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

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

接下来进行代码实验。

 爽!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 注解进行简化,比如上面的代码就可以简化为:

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

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

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

 还有很多 ...  

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

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

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

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

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

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

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

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

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

每天进步一点点!Peace!

2020.01.08晚

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

原文  http://mp.weixin.qq.com/s?__biz=MzU4ODI1MjA3NQ==&mid=2247485020&idx=1&sn=3c3405807f96a597398f513c48bb094e
正文到此结束
Loading...