请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

0度终极幻想书包 贩个日本妞儿 IDEA中用好Lombok,撸码效率至少提升5倍重生之名门锦翠

[复制链接]
查看: 733|回复: 10

202

主题

440

帖子

844

积分

等待验证会员

积分
844
发表于 2019-4-13 15:45 | 显示全部楼层 |阅读模式
之前的Java项目中,充溢着太多不友爱的代码:POJO的getter/setter/toString;异常处置;I/O流的封闭操纵等等,这些榜样代码既没有技术含量,又影响着代码的美妙,Lombok应运而生。
任何技术的出现都是为领会决某一类题目,假如在此根本上再建立奇技淫巧,不如回归Java自己,应当连结公道利用而不滥用。
Lombok的利用很是简单:
<h1>1)引入响应的maven包


DXCPICKPRE_0</pre>Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。究竟正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。
<h1>2)增加IDE工具对Lombok的支持

IDEA中引入Lombok支持以下:
点击File-- Settings设备界面,安装Lombok插件:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154514i117ft7kt1snfy7u


点击File-- Settings设备界面,开启 AnnocationProcessors:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154514k3r2rilpqa1rrzrr


开启该项是为了让Lombok注解在编译阶段起到感化。
Eclipse的Lombok插件安装可以自行百度,也比力简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini设置文件中增加以下两项内容:

DXCPICKPRE_1</pre><h1>3)Lombok实现道理

自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”标准,只要法式实现了该API,就能在javac运转的时辰获得挪用。
Lombok就是一个实现了"JSR 269 API"的法式。在利用javac的进程中,它发生感化的具体流程以下:

  • javac对源代码停止分析,天生一棵笼统语法树(AST)
  • javac编译进程中挪用实现了JSR 269的Lombok法式
  • 此时Lombok就对第一步调获得的AST停止处置,找到Lombok注解地点类对应的语法树(AST),然后点窜该语法树(AST),增加Lombok注解界说的响应树节点
  • javac利用点窜后的笼统语法树(AST)天生字节码文件
4) Lombok注解的利用
POJO类常用注解:
@Getter/@Setter: 感化类上,天生一切成员变量的getter/setter方式;感化于成员变量上,天生该成员变量的getter/setter方式。可以设定拜候权限及能否懒加载等。

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154514qg0iwqlz77pisoiq


在Structure视图中,可以看到已经天生了getter/setter等方式:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154515hv5ruilif3dy7mrf


编译后的代码以下:[这也是传统Java编程需要编写的榜样代码]

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154515o6kd5kj5645jk5kp


@ToString:感化于类,覆盖默许的toString()方式,可以经过of属性限制显现某些字段,经过exclude属性解除某些字段。

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154515wtr30666366r31y1


@EqualsAndHashCode:感化于类,覆盖默许的equals和hashCode
@NonNull:首要感化于成员变量和参数中,标识不能为空,否则抛出空指针异常。

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154515az2zgf2o59e9e28f


@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:感化于类上,用于天朝气关函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方式的方式天生道,access属性可以限制拜候权限。
@NoArgsConstructor:天生无参机关器;
@RequiredArgsConstructor:天生包括final和@NonNull注解的成员变量的机关器;
@AllArgsConstructor:生玉成参机关器。

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154515uufcxpfseaee2c7b


编译后成果:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154516z7jqbx4o774rqqxo


@Data:感化于类上,是以下注解的调集:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
@Builder:感化于类上,将类改变成建造者形式
@Log:感化于类上,天生日志变量。针对分歧的日志实现产物,有分歧的注解:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154516pssbobwfmpxoc983


其他重要注解:
@Cleanup:自动封闭资本,针对实现了java.io.Closeable接口的工具有用,如:典型的IO流工具

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154516by4p0m72a6m7pyiq


编译后成果以下:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154516sirrffebv4rr14iv


能否是简洁了太多。
@SneakyThrows:可以对受检异常停止捕捉并抛出,可以改写上述的main方式以下:

IDEA中用好Lombok,撸码效力最少提升5倍

IDEA中用好Lombok,撸码效率至少提升5倍  科技资讯 154516m1382n9x4brsm7b1


@Synchronized:感化于方式级别,可以替换synchronize关键字或lock锁,用处不大。
Java识堂,一个高原创,高收藏,有干货的微信公众号,一路长大,一路进步,接待关注

DXCPICKPRE_2</pre>
感谢您的阅读
回复

使用道具 举报

225

主题

459

帖子

928

积分

等待验证会员

积分
928
发表于 2019-4-13 15:24 | 显示全部楼层
这个东西少用
回复 支持 反对

使用道具 举报

217

主题

468

帖子

904

积分

等待验证会员

积分
904
发表于 2019-4-13 15:24 | 显示全部楼层
自找麻烦,切莫使用
回复 支持 反对

使用道具 举报

219

主题

459

帖子

900

积分

等待验证会员

积分
900
发表于 2019-4-13 15:24 | 显示全部楼层
真能变快吗,我看未必,用ide生成代码一样快
回复 支持 反对

使用道具 举报

217

主题

492

帖子

916

积分

等待验证会员

积分
916
发表于 2019-4-13 15:24 | 显示全部楼层
代码简洁了,但是在可读性,通用性,可移植性变差了。
回复 支持 反对

使用道具 举报

229

主题

482

帖子

946

积分

等待验证会员

积分
946
发表于 2019-4-13 15:24 | 显示全部楼层
缺点是依赖插件,没有插件辅助编译就不行
回复 支持 反对

使用道具 举报

发表于 2019-4-13 15:24 | 显示全部楼层
ide某些版本安装会有问题,而且依赖插件,移植性不好,方便是方便,但生成getset也不繁琐,最大的优点就是代码简洁了,但为了移植性也就放弃了,毕竟不是所有人都爱这个
回复 支持 反对

使用道具 举报

196

主题

433

帖子

822

积分

等待验证会员

积分
822
发表于 2019-4-13 15:24 | 显示全部楼层
已经在使用中,我最常用的是data。
回复 支持 反对

使用道具 举报

225

主题

463

帖子

917

积分

等待验证会员

积分
917
发表于 2019-4-13 15:24 | 显示全部楼层
有一个缺点,生成setter方法时,bType和手写时不一样,这是个坑
回复 支持 反对

使用道具 举报

208

主题

495

帖子

906

积分

等待验证会员

积分
906
发表于 2019-4-13 15:24 | 显示全部楼层
这玩意除了链式之外没啥用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 快猫网-人工智能和智能硬件领域的互联网科技媒体 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表